Apache geode 安装使用

Apache geode

可在广泛分布的云架构中提供对数据密集型应用程序的实时,一致的访问。
Geode还是一个内存数据管理系统,可提供可靠的异步事件通知和有保证的消息传递。
 
任务: 跟redis一样的,先在linux搭建一个单机,再java写一个客户端,消费端,测试一下。
 

geode下载

 

linux 安装,解压即可 (jdk要1.8以上)

新建一个/work目录专门安装软件和上传软件包
cd /
mkdir work
tar -zxvf apache-geode-1.12.0.tgz
mv apache-geode-1.12.0 geode

  

 
编辑/etc/profile 添加环境变量,就可以直接使用gfsh命令。但是一般本机账户没有权限,要root才行,所以我们可以使用sudo命令
sudo vim /etc/profile
在配置最下面添加:
export PATH=$PATH:/work/geode/bin
使用下面命令,让配置马上生效
source /etc/profile

  

启动locator

(它告诉一个新连接的成员其它正在运行的成员的位置,并为服务器提供负载均衡。用于监测和管理geode集群)
gfsh
start locator --name=locator1
 

启动基于浏览器的pulse监控工具

start pulse
Running desktop applications is not supported on Linux.
 
这个命令启动pulse并自动连接到locator的JMX管理器,
在pulse的登录页面 http://192.168.1.141:7070/pulse  
默认账户:admin  密码:admin。
 
后台运行语法(了解即可):
gfsh
如要直接在命令行上运行多个命令,请使用-e选项,然后gfsh在引号内加上命令。例如:
gfsh -e "start locator --name=locator1" -e "start server --name=server1 --server-port=40411"
 
启动/停止缓存服务器Server
start server --name=server1 --server-port=40411
stop server --name=server1
 
 
创建分区,策略REPLICATE_PERSISTENT
create region --name=regionA --type=REPLICATE_PERSISTENT
 
 
bug:在server1上创建分区后,在pluse上提示server1崩溃退出
Member Departed server1 has crashed = false
查看server1.log:
The disk volume . for disk store DEFAULT has exceeded the critical usage threshold and is 64% full
磁盘卷。对于磁盘存储,默认值已超过临界使用阈值,并且已满64%
geode.cache.DiskAccessException: For DiskStore: DEFAULT: Critical disk usage threshold exceeded for volume /home/appadmin/server1/.: the file system only has 765480960 bytes free which is below the minimum of 1094713344.
对于DiskStore:DEFAULT:超过volume/home/appadmin/server1/的关键磁盘使用阈值:文件系统只有765480960个可用字节,低于最小值1094713344。(1044MB)
居然在home文件下启动geode并默认在/home下存储数据了。
在/work目录下,我的空间比较大, 需要指定server 和 locator启动的初始化目录就可以
解决办法:
cd /work/
[user@flxxxxx work]$ df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_work 216G 296M 216G 1% /work
排查了一波,/work磁盘有整整216G
切换到 /work/geode 下执行gfsh,再启动locator 和 server,启动成功,此目录下空间充足,server 不会因为空间不足而自动停止了。
 
 
用gfsh命令来查看集群中的区域
gfsh> list regions

  

列出集群上的成员,你开启的locator和缓存服务器出现在列表中
gfsh> list members

  

查看区域说明
gfsh> describe region --name=regionA

  

 
 
注意事项:在新的终端窗口 启动gfsh时,你必须使用connect命令connect其指向正在运行的定位器,以便你可以找到regionA等;
(只要使用了新的shell,重新建立了连接,就需要执行此步骤,以便于找到属于你的locator)
(或者当使用 quit 退出了gfsh命令窗口,想再次重连已经启动的locator时也要使用下面的命令方式)
gfsh> connect --locator=localhost[10334]

  

 
 
============分割线=============

JAVA API DEMO 链接

依赖
<dependencies>
  <dependency>
    <groupId>org.apache.geode</groupId>
    <artifactId>geode-core</artifactId>
    <version>1.12.0</version>
  </dependency>
</dependencies>

  

关于发布jar包到geode (凡是自定义的实体类对象要存到geode, 就要实现DataSerializable 接口,并打成jar包 发布到geode上)
 
部署位于指定目录下的所有jar文件到所有的成员:
gfsh> deploy --dir=/work/geode/deploy

  

卸载分布式系统中所有之前部署的jar文件:
gfsh> undeploy

  

为啥要发布到geode里呢?
因为我们用UserBean的序列化和反序列化作为表结构,因此deode查询时需要UserBean.class,我们发布hellogeode-0.0.1-SNAPSHOT.jar到geode,主要是为了把UserBean.class导入到geode里;
gfsh> deploy --jar=/work/geode/deploy/spring-geode-demo-1.0-SNAPSHOT.jar
 
若是我们对UserBean有修改的话,需要先卸载jar,然后再重新发布
gfsh> undeploy --jar=hellogeode-0.0.1-SNAPSHOT.jar
 
查看发布的jar包情况
gfsh>list deployed
 
OQL查询BUG
gfsh>query --query="select * from /regionA where age>9999"
Result : false
Message : A ClassNotFoundException was thrown while trying to deserialize cached value.
报错因为没有deploy实体类的 jar包,发布后就可以了
 
IDEA直接运行BUG
WARN org.apache.geode.cache.client.internal.ConnectionFactoryImpl - Could not connect to: flixxxx.xxxx.com.cn:40411
java.net.UnknownHostException: flixxxx.xxxx.com.cn
解决办法,因为 flixxxx.xxxx.com.cn 是linux 上面的 /etc/hosts 配置的,但是在本地的windows不认识:
修改windows的 host文件,: your linux hostname flixxxx.xxxx.com.cn
 
然后,报了新的BUG
执行远程查询时异常,无法找到regionAu,怎么会是 regionAu
org.apache.geode.cache.client.ServerOperationException: remote server on LAPTOP-CRM8M3CD(44864:loner):63450:15ba472c: While performing a remote query
Caused by: org.apache.geode.cache.query.RegionNotFoundException: Region not found: /regionAu
 
解决, 原因是代码中 OQL 语法拼接有问题,才注意到 u 前面少了个空格,改成如下即可
select * from /"+regionName+" u where u.age>15
 
 

posted @ 2020-09-23 17:09  levi125  阅读(1306)  评论(0编辑  收藏  举报