先下载zookeeper的linux安装包 //安装zookeeper必须要先安装jdk,现在都是1.8以上的版本
//注意版本的控制,现在线上版本 zookeeper3.4.8无明显bug,生产上要控制版本
上传到linux中。
然后解压到指定的文件目录下 tar -zxvf zookeeper... -C /usr/local/apps/
cd app/
cd zookeeper.../看一下他的目录结构
里面的jar包就一个zookeeper-3.4.5.jar
bin目录下有运行的命令
conf里是配置文件,首先到配置文件下去配置
cd conf/
要修改的配置文件为zoo_sample.cfg(我们需要改名字)
mv zoo_sample.cfg zoo.cfg
ls -l
zoo.cfg就是我们要修改的配置文件
vi zoo.cfg中修改为dataDir=/usr/local/apps/zookeeper-3.4.6/data工作目录
在最后加一下
他必须知道我们的集群里面有哪些服务器
server.1=hadoop-server-00:2888:3888
server.2=hadoop-server-01:2888:3888
server.3=hadoop-server-02:2888:3888
(其中2181代表:客户端与服务器连接所用的端口)
(其中2888代表:leader与follower之间的通信用的端口)
(其中3888代表:follower之间选举投票用的端口)
这里注意:
在后面的生产中,这里要写成这样 server.1=ip:2888:3888
server.2=ip:2888:3888
server.3=ip:2888:3888
因为:写主机名,zk能起来,kafka也能起来,但是kafka他去解析ZK的时候,他不通过etc/hosts 以后会出问题
这里面,我们就下IP,这里注意下
要在这个 /root/app/zookeeper-3.4.5/data下创建data的工作目录
mkdir data
cd data/
要在data这里面创建一个文件,里面写一个这台服务器在zookeeper里面的编号
echo 1 > myid(必须叫myid不能用别的名字)
这是在一台主机上面配置完成,下面我们需要把配置文件分发到每个机器上去
切换到安装目录/usr/local/apps/ 把这个配好的zookeeper拷贝到目标机器上去
scp -r zookeeper-3.4.6/ hadoop-server-01:/usr/local/apps/
scp -r zookeeper-3.4.6/ hadoop-server-02:/usr/local/apps/
分别拷贝到01 02机器上去
因为在主机00这台机器上我们设置的myid为1 所以我们在01 02这两台机器上要分别设置myid为2 3
在hadoop-server-01上
切换到/usr/local/apps/zookeeper-3.4.6/data
cd zookeeper-3.4.6/data/
ll
cat myid
echo 2 >myid
在hadoop-server-02上同上
到目前为止zookeeper就配置完成,接下来就我如何启动他
2019/1/27 星期日
注意这里,我们还需要修改zookeeper的启动内存大小 //此步骤详情,见深度学习kafka研究笔记
启动zookeeper集群
启动zookeeper的命令在bin目录下
cd bin/
ll
【zkServer.sh(是linux中的启动命令)
zkserver.cmd(是windows中的启动命令)】
./zkServer.sh start
jps看一下会看到QuorumpeerMain
但在其他的机器中看不到程序进程的启动(正常),因为这个启动脚本不负责把其他机器上的服务进程启动起来 每台机器都需要手动启动,也可以写一个启动的脚本(这里我们手动启动)
每台机器上都是通过选举来推荐出leader server所以不知道那台机器上是leader server那台机器上是follower server 因此我们可以通过 ./zkServer.sh status来看每台机器上到底是什么server
当三个节点的时候,我杀掉1台,他还可以正常工作,杀掉2台就不能正常工作了
zookeeper有一个规律:集群中只要有半数以上节点活着,zookeeper就会正常工作,必须要半数以上,
那为什么一定要超过半数,归根于投票,因为集群中的投票算法是随机的,也就是说一点要有一个机器被选上当leader server所以当小于半数的时候就不能选举出leader server
集群中配置服务器节点数量最好是奇数
zookeeper的功能://只有2个功能,其他的功能都是基于zk实现的
也就是第三方,要你查数据的时候,可以返还给客户端,所以具体他是不知道干什么的
(最重要的功能也就是替客户端保管数据,为客户提供数据的监听服务)
zookeeper中的数据节点
每一个节点称为znode 通过路径来访问
每一个znode维护着,数据,stat数据结构(ACL 时间戳及版本号)
每个节点存储的数据量很小,KB级别(状态数据,往往是一下标志,不能存储大数据)
zonde有永久节点(只要不是人为的删除就不会消失,下次打开还有),和零时节点(只要断开了,就没有了,下次打开也不会有了,因为删除了)之分
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/197761.html