ZooKeeper部署
程序员文章站
2022-06-19 08:30:58
...
两台虚拟机(CentOS Linux 7):
192.168.190.200 master
192.168.190.201 slave1
创建两个zookeeper服务,最好是奇数个节点,原因:
3个节点和4个节点时,允许节点宕机数目都为1个(三分之一),所以从高可用角度,3个和4个效果一样
所有节点都执行(hadoop用户)
1. 在 /home/hadoop/ 下创建目录,如下结构:
zookeeper_server
|—— data
|—— logs
(**下面是很关键的一步)
并在 data/ 下创建 myid 文件,用于存放 zk的server_id
master 节点中的 myid 文件内容: 0
slave1 节点中的 myid 文件内容: 1
2. 下载 ZooKeeper 版本:zookeeper-3.4.14.tar.gz ,存放/opt/下
3. 解压
$ cd /opt
$ tar -zxvf zookeeper-3.4.14.tar.gz
4. 复制并修改配置文件
$ cd zookeeper-3.4.14/conf
$ cp zoo_sample.cfg zoo.cfg
$ vi zoo.cfg
<如下配置:>
tickTime=2000 # 客户端与服务端的心跳间隔(毫秒)
initLimit=10 # follower和leader服务器间初始连接的超时时间,tick倍数
syncLimit=5 # follower和leader服务器间同步时的超时时间,tick倍数
dataDir=/home/hadoop/zookeeper_server/data # 内存数据库快照存放目录
dataLogDir=/home/hadoop/zookeeper_server/logs # 事务日志目录
clientPort=2181 # 服务器向客户端提供的连接端口号
server.0=192.168.190.200:2888:3888 # 服务器0地址
server.1=192.168.190.201:2888:3888 # 服务器1地址
注:server.id=host:port:port 中的后两个端口号分别用于仲裁通讯和群首选举
5. 配置zk环境变量,在/etc/profile文件末尾添加如下内容:
$ su root
$ vi /etc/profile
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin
$ source /etc/profile
6. 启动所有节点的zk server 进程:
[email protected] ~]$ zkServer.sh start
[email protected] ~]$ zkServer.sh start
启动后,如下信息:
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
7. 查看服务是否真的启动了
$ ps -ef | grep zookeeper
8. 查看zk服务状态(提示:leader 和 follower )
[email protected] ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
[email protected] ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: leader
**注:1.服务只启动了一个(无法构成法定仲裁人数:至少 三分之二 数量);
2.或者防火墙没有关;
3.或者server_id配置错误
都会如下报错:
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
9. 相关服务操作:
$ zkServer.sh start
$ zkServer.sh status
$ zkServer.sh restart
$ zkServer.sh stop
$ zkServer.sh start-foreground (以打印日志方式启动,容易打印时卡住)
10. 访问集群
$ zkCli.sh -server master:2181
1. 创建znode节点,并包含数据
[zk: master:2181(CONNECTED) 0] create /mynode "Hello zk !"
Created /mynode
2. 获取znode数据
[zk: master:2181(CONNECTED) 1] get /mynode
Hello zk !
3. 删除znode节点
[zk: master:2181(CONNECTED) 2] delete /mynode
4. 查看根节点下子节点目录
[zk: master:2181(CONNECTED) 3] ls /
5. 更多命令查看help
[zk: master:2181(CONNECTED) 4] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
参考链接:
1. 《Spark Streaming 实时流式大数据处理实战》5.1 ZooKeeper简介
上一篇: 利用python批处理替换文件内容