首先先了解一下 ZooKeeper 是什么?
- Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务;
- 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等
那么ZooKeeper 又有什么作用呢?用一张图片来做一个简单的了解
那么hadoop 又为什么要用 ZooKeeper 来处理事件呢?
ZooKeeper能够提供通用的分布式锁服务,用以协调分布式应用;使用Zookeeper的事件处理确保整个集群只有一个NameNode,存储配置信息等.最主要的是ZooKeeper具有简单、富有表现力、高可用性、采用松耦合交互方式等这些特性。
下面开始搭建一个Zookeeper的集群
-
ZooKeeper集群至少3个节点(hadoop0,hadoop1,hadoop2),并且节点之间的系统时间一致。
在hadoop0上,解压缩、重命名、设置环境变量
在hadoop0的$ZOOKEEPER_HOME/conf下,mv zoo_sample.cfg zoo.cfg
-
编辑zoo.cfg文件
修改dataDir=/usr/local/zk/data
新增了三行 server.0=hadoop0:2888:3888
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
-
在hadoop0上, 创建目录 mkdir -p /usr/local/zk/data
-
在data目录中,创建文件myid,内容是0
-
把zk目录、环境变量文件复制到hadoop1、hadoop2中
scp -r /usr/local/ZooKeeper hadoop1:/usr/local
-
在hadoop1、hadoop2中修改文件myid,把内容改为1、2
-
在hadoop0、hadoop1、hadoop2上,分别执行启动命令zkServer.sh start
-
查看节点Mode,执行命令zkServer.sh status
使用shell操作zookeeper
- 执行zkCli.sh进入ZooKeeper的shell环境
- 常见的操作:
ls /
create /example abcd
get /example
set /example asdfadsf
ZooKeeper的一个入门水平也差不多了