集群搭建
zookeeper集群规模不小于3个节点,并且要求服务器之间系统时间保持一致。
首先在一台机器上192.168.1.106如下操作:
1、下载包传到Linux后解压到/usr/local/zookeeper/下
2、添加环境变量vim /etc/profile
1 | #zookeeper |
3、进入cd /usr/local/zookeeper/conf
1 | 重命名配置文件:mv zoo_sample.cfg zoo.cfg |
4、创建data目录:/usr/local/zookeeper/data
1 | 在data下创建文件myid |
5、把zookeeper目录远程拷贝到192.168.1.107、192.168.1.108
1 | 进入/usr/local/ |
在三台机器上分别启动zookeeper
启动:zkServer.sh start
看状态:zkServer.sh status(其中一个是leader,其他为follower)
重启:zkServer.sh restart
1 | ### 7、操作zookeeper (shell) |
zkCli.sh 进入zookeeper客户端
根据提示命令进行操作:
查找:ls / ls /zookeeper
创建并赋值:create /server hadoop
获取:get /server
设值:set /server hadoop
可以看到zookeeper集群的数据一致性
创建节点有俩种类型:短暂(ephemeral) 持久(persistent)
zkCli.sh -server 192.168.1.106
1 | ## 操作API |
(1)org.apache.zookeeper
(2)org.apache.zookeeper.data
(3)org.apache.zookeeper.server
(4)org.apache.zookeeper.server.quorum
(5)org.apache.zookeeper.server.upgrade
1 | 其中org.apache.zookeeper,包含Zookeeper类,他是我们编程时 最常用的类文件。这个类是Zookeeper客户端的主要类文件。如果要使用Zookeeper服务,应用程序首先必须创建一个Zookeeper实例, 这时就需要使用此类。一旦客户端和Zookeeper服务建立起了连接,Zookeeper系统将会给次连接会话分配一个ID值,并且客户端将会周期性的 向服务器端发送心跳来维持会话连接。只要连接有效,客户端就可以使用Zookeeper API来做相应处理了。 |
connectString 服务器列表,用逗号分隔
sessionTimeOut 心跳检测时间周期,毫秒
wather 事件处理通知器
canBeReadOnly 标识当前会话是否支持只读
sessionId和sessionPasswd 标识连接集群的sessionid和密码。
1 | 由于zookeeper客户端和服务端简历连接会话是一个异步的过程,在程序中,我们我们需要在程序中设置等待连接成功在进行下面代码执行。 |
同步方式:
参数1 节点路径,不许递归创建路径。
参数2 节点内容,要求类型是字节数组,不支持序列化方式,如果需要实现序列化,可以使用序列化框架如:Hessian/kryo框架
参数3 节点权限,用Ids.OPEN_ACL_UNSAFE开放权限即可
参数4 节点类型,四种:
PERSISTENT 持久节点
PERSISTENT SEQUENTIAL 持久顺序节点
ERHEMERAL 临时节点
ERHEMERAL SEQUENTIAL 临时顺序节点
```