zookeeper是什么
Zookeeper,一种分布式应用的协作服务,是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务,它包含一个简单的原语集,应用于分布式应用的协作服务,使得分布式应用可以基于这些接口实现诸如同步、配置维护和分集群或者命名的服务。
zookeeper是一个由多个service组成的集群,一个leader,多个follower,每个server保存一份数据部分,全局数据一致,分布式读写,更新请求转发由leader实施.
更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行,数据更新原子性,一次数据更新要么成功,要么失败,全局唯一数据试图,client无论连接到哪个server,数据试图是一致的.
为什么要用zookeeper
大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等),目前,大部分应用需要开发私有的协调程序,缺乏一个 通用的机制.协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器,ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用
集群容灾性:
3台机器只要有2台可用就可以选出leader并且对外提供服务(2n+1台机器,可以容n台机器挂掉)。
Zookeeper分布式环境搭建:
1、 去Zookeeper官网下载Zookeeper. 以zookeeper-3.4.6.tar.gz为例
2、 [root@hadoopslave1 ~]# cd /bin
3、 [[root@hadoopslave1 bin]# tar -zxvf zookeeper-3.4.6.tar.gz
4、 [root@hadoopslave1 bin]# cd zookeeper-3.4.6/conf
5、 [root@hadoopslave1 conf]# vi zoo.cfg (如果zoo.cfg不存在,可以用zoo_sample.cfg拷贝一个并重命名 cp zoo_sample.cfg zoo.cfg)
6、 [root@hadoopslave1 conf]# vi zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
server.1=192.168.0.100:2888:3888 (hadoopslave1)
server.2=192.168.0.200:2888:3888 (hadoopslave2)
server.3=192.168.0.300:2888:3888 (hadoopslave3)
注意:server.后面的数字是固定的,每个机上的zoo.cfg必须一样,这个编号不能换,如果有新的从机,编号往下增加
clientPort=2181
dataDir=/bin/zookeeper-3.4.6/data (如果data这个文件夹不存在,手工创建)
7、 Vi /bin/zookeeper-3.4.6/data/myid 在192.168.0.100(hadoopslave1)中放1 安装一台,并用scp –r /bin/zookkeper-3.4.6 root@hadoopslave2:/bin/就是集群设置(不要忘记修改环境变量) Vi /bin/zookeeper-3.4.6/data/myid 在192.168.0.200(hadoopslave2)中放2 scp –r /bin/zookkeper-3.4.6 root@hadoopslave3:/bin/ Vi /bin/zookeeper-3.4.6/data/myid 在192.168.0.300(hadoopslave3)中放3 这样ZOOKEEPER集群已经安装配置完成 7. 在ZOOKEEPER的部署目录下,在各个节点上通过如下命令来启动: [root@hadoopslave1 zookeeper-3.4.8]# bin/zkServer.sh start 在各个节点上通过如下命令来查看zookeeper状态,是否正常启动: [root@hadoopslave1 zookeeper-3.4.8]# bin/zkServer.sh status 8. 用JPS命令查看,服务进程QuorumPeerMain
(责任编辑:IT) |