写在前面,从网上东拼西凑+踩坑记录,写的也许有错,麻烦提醒一下哈
可能是最好搭建的集群之一
Zookeeper最好搭建奇数台。如果集群内可用的机器>50%,对外就是可用的。
这里我搭3台,master,worker1,worker2;
1:Zookeeper的下载:
用3.6.1的版本。
2:先在master上操作,解压
3:修改配置文件
先给zookeeper文件夹创建一个软链接:
ln -s apache-zookeeper-3.5.8-bin zookeeper
在解压后的文件中找到conf文件夹,将zoo_sample.cfg 重命名为zoo.cfg,
tickTime
心跳基本时间单位,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。
initLimit
tickTime的个数,表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)
syncLimit
tickTime的个数,这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。
dataDir
内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。
clientPort
配置ZK监听客户端连接的端口
server.serverid=host:tickpot:electionport
server:固定写法 serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复) host:主机名
tickpot:心跳通信端口 electionport:选举端口
4:分发zookeeper包
回到上级目录,终端输入:
scp -r zookeeper/ hadoop@worker1:$PWD
scp -r zookeeper/ hadoop@worker1:$PWD
5:配置myid
分发好了之后,在每台服务器上新建刚刚配置好的dataDir=/home/hadoop/data/zookeeper文件夹。
新建完成后,再新增一个文件myid,里面的内容对应刚刚配置的server.1=192.168.188.101:2888:3888里server.*。比如我在192.168.188.101服务器上,也就是master,在dataDir路径下新增了一个文件叫做myid:
像这样,在每台服务器上都配置好。
6:配置zookeeper环境变量
在三台机器上,
vim ~/.bashrc
增加以下内容
然后 source ~/.bashrc 使修改生效。
7:启动zookeeper集群
在三台机器上,
zkServer.sh start 启动
zkServer.sh status 状态
zkServer.sh stop 停止
先启动一台试试:
只有一台,直接报错了。再启动一台:
你这个worker怎么是leader啊(恼
启动完三台,回去看状态:
我master成follower了,成何体统!
全文完。