Hadoop 集群下安装 ZooKeeper
上传ZooKeeper安装文件
在centos01
节点中,利用ftp工具将zookeeper-3.4.10.tar.gz
上传到/opt/softwares/
目录中,并进入该目录,将其解压到目录/opt/modules/
文件夹:
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/modules
编写配置文件
在ZooKeeper安装目录下新建文件夹dataDir,用于存放ZooKeeper相关数据
在ZooKeeper安装目录下的conf文件夹中新建配置文件zoo.cfg,加入以下内容
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/opt/modules/zookeeper-3.4.10/dataDir
clientPort=2181
server.1=centos01:2888:3888
server.2=centos02:2888:3888
server.3=centos03:2888:3888
initLimit
:集群中的Follower服务器初始化连接Leader服务器时能等待的最大心跳数(连接超时时长)。默认为10,即如果经过10个心跳之后Follower服务器仍然没有收到Leader服务器返回信息,则连接失败。这里设置为5,参数tickTime
为2000(毫秒),则连接超时时长为 5 × 2000(毫秒)= 10(秒)。syncLimit
:集群中的Follower服务器与Leader服务器之间发送消息以及请求/应答时所能等待的最多心跳数,这里设置为 2 × 2000(毫秒)= 4(秒)。server.id=host:port1:port2
:标识不同的ZooKeeper服务器。ZooKeeper可以从中读取相关信息。其中id唯一,而且大小应该在1~255之间;host时服务器的名称或IP地址;第一个端口(port1)时Leader端口,即该服务器作为Leader时供Follower连接的端口;第二个端口(port2)是选举端口,即选举Leader服务器时供其他Follower连接的端口。dataDir
:ZooKeeper存储数据的目录。clientPort
:客户端链接ZooKeeper服务器的端口,接收客户端的请求。
让ZooKeeper识别本机
在配置文件zoo.cfg
中的参数dataDir
指定的目录(这里为/opt/modules/zookeeper-3.4.10/dataDir
)下新建一个名为myid
的文件,这个文件仅包含一行内容,即当前服务器的id值,与参数server.id
的id相同(这里为1)。ZooKeeper启动时会读取该文件,将其中的数据与zoo.cfg
里写入的配置信息进行对比,从而获取当前服务器的身份信息。
复制ZooKeeper安装信息到其他节点
scp -r /opt/modules/zookeeper-3.4.10/ hadoop@centos02:/opt/modules/
scp -r /opt/modules/zookeeper-3.4.10/ hadoop@centos03:/opt/modules/
修改其他节点配置
将另外两个节点中的myid
文件的值修改为相应的数字(2/3)
启动ZooKeeper
分别进入每个节点的ZooKeeper安装目录:
bin/zkServer.sh start
这样就代表成功:
查看启动状态
分别进入每个节点的ZooKeeper安装目录:
bin/zkServer.sh status
可以看到,ZooKeeper在选举后,选举centos02为leader,centos01和centos03为follower
测试客户端连接
在任意节点上的ZooKeeper安装目录上输入:
bin/zkCli.sh -server centos01:2181
然后就进入了ZooKeeper命令行模式:
ZooKeeper命令行操作
跟Linux命令行操作差不多
查询节点列表
ls /
可以看到,当前根目录有一个名为“zookeeper”的znode节点
创建节点
例如:
在根目录创建一个名为“zk”的znode以及在它上面存放的元数据字符串为“myData”:
create /zk "MyData"
也可以在某一个节点下创建子节点。例如,在上面创建的“zk”节点下新建节点“node1”,并关联其元数据为“childData”:
create /zk/node1 "childData"
注意:创建节点是必须知指定节点中存放的元数据字符串,否则节点创建失败。若执行命令时没有返回任何信息,则说明该节点创建失败。例如:
查看节点详细信息
例如,查看节点“zk”的详细信息:
get /zk
修改节点
例如,将节点“/zk”所关联的字符串修改为“MyDataUpdate”:
set /zk "MyDataUpdate"
其他信息可以和上图对比着看
删除节点
例如,删除“/zk/node1”:
delete /zk/node1
注意,删除节点时,如果该节点有子节点,则需要先删除子节点,才能删除他的该节点。如上图所示。
终止ZooKeeper
分别进入每个节点的ZooKeeper安装目录:
bin/zkServer.sh stop