Zookeeper 简介 与 集群配置
【Storm的各个组件间是通过这个组件进行通信】
简介:
Zookeeper是一个开源的分布式协调服务的框架,使各个机器进行之间进行通信
1.1核心功能:
- 文件系统
- 通知机制
文件系统:
类似于linux的文件系统目录结构,从根目录(/)开始
1.每一个目录都是一个znode节点
2.每一个znode节点可直接存储数据
3.类型:持久化,持久化顺序,临时,临时顺序
通知机制:
- 客户端监听关心的znode节点
- Znode节点有变化(数据改变、删除、子目录添加删除),通知客户端处理
1.2 zookeeper的安装
下载:直接去官网:zookeeper.apache.org或CDH5进行下载
/opt/soft [下载位置]
/opt/module 【解压位置】
下载 *.tar.gz
解压 tar –zxvf *tar.gz –C /apps
解压后的主要目录结构:
bin:包含
- zkCli.sh 【命令行客户端,可以去连接到这个文件系统,类似于hadoop fs】
- zkCleanup.sh [zk是一个小型文件系统,用于清理数据信息,保证各个节点的数据一致]
- zkEnv.sh [环境变量的一些东西]
- zkServer.sh 【zk服务器的启动停止等操作】
conf:包含
- log4j.properties 日志输出级别
- zoo_sample.cfg mv zoo_sample.cfg zoo.cfg
- [tickTime:客户端与zk服务器的心跳时间,各个znode节点也要保持心跳]
- InitLimit 启动集群时候,选举Nimbus节点的最大时间 tickTime* InitLimit
- SyncLimit 集群中各个znode节点进行数据同步时候,保持数据一致性,进行数据同步的最大时间,超过这个时间,数据会同步失败
- dataDir zookeeper是一个小型的文件系统,将数据存放在哪里配置
- clientPort 客户端访问zk服务器的端口号2181去连接到这个服务器
在解压后的目录新建一个data的目录用于存放zk的数据
将$ZK_HOME/data 替换conf/zoo.cfg 中的dataDir
启动bin/zkServer.sh start
Jps
Or
bin/zkServer.sh status
- standalone状态
1.3 zk的命令行客户端
去连接zk服务器
bin/zkCli.sh
这样会连接本地的zk服务器‘
里面的操作类似于linux的操作
输入ls
查看根目录有什么 ls /
查看目录下面的数据 get /
创建目录 create /test 111
查看数据 get /test 得到111
修改数据 set /test 222
再次查看: get /test 得到222
删除数据rmr /test
再次查看 ls / 无test目录
1.4 zookeeper的集群搭建
(推荐1,3,5这样的节点数,在进行节点选举的时候,保证能选举一个主节点出来)
启动三个机器
配置第一台
步骤一:在单机的基础(解压后修改dataDir的目录)上,添加配置项
server. 这个id是唯一的
2888端口 服务器之间是需要进行数据的同步的
3888端口 集群在启动的时候进行选举Nimbus节点
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
步骤二: 在什么地方进行存储,当前机器是哪一个ID
在$ZK_HOME/data 目录下 新建文件myid 用于存储这个id
Vim $ZK_HOME/data/myid 写入1 :wq即可
步骤三:拷贝第一台服务器到其余两台服务器上面去
scp -r zookeeper-3.4.5/ root@192.168.1.2:/opt/module
即可
在这之前可以配置ssh的免密码登录
拓展:
1.HOSTNAME主机名:vim /etc/sysconfig/network
2.配置ip与主机名之间的映射关系
Vim /etc/hosts
192.168.1.1 hadoop001
192.168.1.2 hadoop002
192.168.1.3 hadoop003
启动zk集群
在每一台上面都要进行启动,bin/zkServer.sh start
Bin/zkServer.sh status 状态为:leader 主节点
Bin/zkServer.sh status 状态为:follower 从节点
ZKcli从1-2-3
192.168.1.1可以使用bin/zkCli.sh -server 192.168.1.2:2181
进入之后,connect 192.168.1.3:2181