1、集群安装
- 官网:http://zookeeper.apache.org/
- 下载地址:http://apache.opencas.org/zookeeper/ 从官方网站上下载tar.gz包,我们这里使用的是:zookeeper-3.4.7.tar.gz
主机名(hostname) | 安装软件 | 运行进程 |
node01 | zookeeper-3.4.7 | QuorumPeerMain |
node02 | zookeeper-3.4.7 | QuorumPeerMain |
node03 | zookeeper-3.4.7 | QuorumPeerMain |
安装步骤
- 在node01机器上安装zookeeper-3.4.7
1). 上传zookeeper-3.4.7.tar.gz到/ packages
2). 解压到当前目录(/ software)
cd /packages
tar -zvxf /packages/zookeeper-3.4.7.tar.gz /software
- 配置
1). 添加一个zoo.cfg配置文件
cd /software/zookeeper-3.4.7/conf
mv zoo_sample.cfg zoo.cfg
#在/software/ zookeeper-3.4.7/创建一个data文件夹
mkdir data
2). 修改配置文件(zoo.cfg)
vi zoo.cfg #添加如下内容
#为zookeeper指定一个工作目录,此目录要手动创建
dataDir=/software/zookeeper-3.4.7/data
#指定集群中各个机器之间地址及通信端口
#3888是选举端口 2888是leader和follower通信端口
#注意 域名(如min1) 都要在各个机器/etc/hosts文件中配置了
#在zoo.cfg最后添加如下内容
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
3). 在上面server.N对应的主机的“dataDir=/software/zookeeper-3.4.7/data”目录下创建一个myid文件,里面内容是N(server.1对应的node01里面的myid文件内容为1 ,server.2对应的node02里面的myid文件内容为2 ,server.3对应的node03里面的myid文件内容为3)
cd /software/zookeeper-3.4.7/data
touch myid #创建一个myid的文件
echo "1" > myid #写入的内容要对应,本机是node01 设置的名称是server.1
因此写入时,要将1写入mydid
- 设置zookeeper日志文件的zookeeper.out存放目录
- 将在node01配置好的zk拷贝到node02和node03节点
scp -r /software/zookeeper-3.4.7/ root@node02:/software/
#在min2的机器中修改myid的值
cd /software/zookeeper-3.4.7/data
echo "2" > myid
scp -r /software/zookeeper-3.4.7/ root@node03:/software/
#在min3的机器中修改myid的值
cd /software/zookeeper-3.4.7/data
echo "3" > myid
2、 集群的启动
- 分别在node01、node02和node03中启动zookeeper
cd /software/zookeeper-3.4.7/bin
./zkServer.sh start #启动zookeeper
- 分别在node01、node02和node03中执行jps 显示如下进程,则启动成功
查看zk状态
cd /software/zookeeper-3.4.7/bin
./zkServer.sh status #启动zookeeper
在三台机器中分别显示如下信息:
zookeeper机器的台数是奇数台,因为zookeeper,工作时必须要保证半数以上机器,奇数台保证高可用
集群的测试使用
在任何一台机器上执行如下命令进入zk客户端的shell
cd /home/hadoop/develop_env/zookeeper-3.4.7/bin
./zkCli.sh
执行完zkcli.sh命令后进入的界面效果如下:
通过help命令查看zk客户端的shell命令帮助
zk服务器中也有类似 linux中的目录结构,”/“ 是它的目录根,在这个根下可以创建任何一个key、value对,其中key值就相当于一个linux中子目录名,但是这个子目录是可以有值的,就是那个value。这个key-value对在zk中叫一个node 这个node可以有子孙node。
- 在根下创建一个node节点key为age, value为18
create /age 18
显示“根”下所有node
ls /
获得一个node的value值
get /age