2.解压zookeeper,然后改名,配置ZOOKEEPER_HOME
3.进入conf下面,把zoo_sample.cfg重新命名为zoo.cfg(之前只是一个事例文件)
4.编辑zoo.cfg
把dataDir改为/usr/local/zookeeper/data文件目录
然后最下面写上
server.0=hadoop0:2888:3888
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
这表示一个zk集群,三个节点,名字是0,1,2,通信端口是2个是2888 和3888
这个0,1,2,只是起一个名字,你可以随便起名,起zhangsan lisi 都行
注意我们客户端连接到zk服务器集群也有一个端口叫:clientPort=2181
5.创建/usr/local/zookeeper/data文件目录,
6.并且在data文件下面创建一个myid文件,内容是自己的名字0或者1或者2
7.把hadoop0上的zookeeper文件夹和/etc/profile复制到hadoop1和hadoop2上 scp -r /usr/local/zookeeper hadoop1:/usr/local
8.到其他节点修改myid,并且source文件
9.每个节点使用zkServer.sh start
10.启动之后进入bin目录。会多一个文件写了一些zookeeper的信息(前提是你使用zkServver.sh start是在bin目录下执行),里面的一个数据表明3888是一个选举端口,当然
可能会报错说不能连接到hadoop1,因为其他节点都没启动呢,所以我们去hadoop1 2都启动起来
通过zkServer.sh status来看看他的领导还是follower
11.通过jps来查看多了一个quorunpeermain进程
ZK集群保证数据传递在集群之间的一致性
zkCli.sh (command line interface)
使用上面的命令进入ZK命令操作
你要记住ZK包含一个文件系统,我们就可以把这里面的命令看着是一个文件系统的操作,有ls查看文件,mkdir类似的操作
每一个目录都可以写值读取值,mkdir没有但是有creat命令
create /hello 120 那么我们用get /hello就能获取到120这个属性值,当然我们的hello是一个目录
这些都不是重点,但是你要知道明白的是!这个一个文件系统。保证文件操作的一致性,类似事务性操作,你可以再2号机器创建一个文件夹
在1号机器马上就能看到,但是你会问为什么不是1G电影,但是我要告诉你,这是zk规定的,他是为了保证一致性,所以限定为2MB以内,
而且我们日常开发一般一次也就几K的信息,我们只是为了及时传输重要的配置信息才使用这个ZK集群,不要想着用一个G电影放上去叫给他们去同步,
现在有个场景:比如说,如果我们的几个服务器连到两个数据库上,如果一个服务器宕机了,那么我们可以利用zk快速的切换到另一个数据库中
我们创建一个/hello 后面跟他的属性,很多人都需要拿这个属性,现在管理员说现在这个属性不能用的,我们换个新的属性,然后管理员就把属性给修改了
叫其他人再去拿属性的时候,属性已经改变了。
用eclipse操场zk时候,只需要在hadoop的基础添加一个zooker包
一个客户端可以配置很多链接字符串,但是他是随机链接一个服务器,这样保证健壮性