zookeeper是一个分布式协调框架,一般用于应用高可用的场景,例如:主从选举,灾难备份,服务感知,服务注册,分布式锁等等,因为其具备优秀的处理速度和可靠性,内部具备主从选举的功能,使得它成为分布式应用不可或缺的一部分,在大数据生态圈中更是重要组成部分。
下载zookeeper安装包,地址: zookeeper-3.4.13
这里我使用的版本是3.4.13,各位看官按照自己的喜好下载解压zookeeper包,并修改名称
tar -zxvf zookeeper-3.4.13.tar.gz /usr/local mv /usr/local/zookeeper-3.4.13 /usr/local/zookeeper修改zookeeper配置信息
vi zoo.cfg //新建一个zoo.cfg文本 配置以下信息: # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/usr/local/zookeeper/data # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 server.0=hadoop1:2888:3888 server.1=hadoop2:2888:3888 server.2=hadoop3:2888:3888 server.3=hadoop4:2888:3888 注:我这里配置了4台zookeeper集群,其实建议配置奇数台,因为跟zookeeper的内部主从选举机制使用的算法相关。以上配置信息都有注释说明,看不懂的使用翻译工具凑合看哈哈~根据配置文件的存放的路径,在其目录下创建一个机器标识号
mkdir -p /usr/local/zookeeper/data cd myid vi myid //我这里使用了4台机器,分别标识为0,1,2,3,且不能重复,不然报错 如上图所示,只需要填写一个数字保存即可,但是机器与机器之间的标识码不能重复建议配置的路径在zookeeper安装目录中,以便分发到各台机器上。配置zookeeper的环境变量
vi /etc/profile export ZK_HOME=/usr/local/zookeeper export PARH=$PATH:$ZK_HOME/bin source /etc/profile分发配置好的zookeeper到各台机器上
scp -r /usr/local/zookeeper hadoop2:/usr/local/ scp -r /usr/local/zookeeper hadoop3:/usr/local/ scp -r /usr/local/zookeeper hadoop4:/usr/local/修改分发好的机器的myid,并配置环境变量,如:
我这里四台机器分别为hadoop1,hadoop2,hadoop3,hadoop4 hadoop1的myid为:0 hadoop2的myid为:1 hadoop3的myid为:2 hadoop4的myid为:3配置环境变量与上面步骤保持一致
在每台机器上启动zookeeper,执行命令:
zkServer.sh start查看启动之后的zookeeper状态,执行命令:
zkServer.sh status 集群机器中只有一台是leader,其余都是follower,如果leader节点挂了,又会进行重新选举如果每台机器都跟上图一样,则zookeeper搭建成功 。然而,也会有失败的时候,原因很多,常见的可能就是配置错误,然后启动集群或者启动部分机器,而另一部分没启动,导致下一次全部启动出错。
最快速的解决方法:清理每台机器中zookeeper中的data目录,保留myid文件,其余都删除了,所有的机器都清理干净之后,再次启动。
非暴力解决方法:查看zookeeper的日志,定位出现的问题,分析原因然后在网上搜索资料解决