zookeeper环境配置
先下载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有永久节点(只要不是人为的删除就不会消失,下次打开还有),和零时节点(只要断开了,就没有了,下次打开也不会有了,因为删除了)之分