zookeeper集群搭建

原创转载请注明出处:http://agilestyle.iteye.com/blog/2290649

 

Zookeeper介绍

Zookeeper是Hadoop下的一个子项目,它是一个针对大型分布式系统的可靠的协调系统,提供的功能包括配置维护、名字服务、分布式同步、组服务等。ZooKeeper是可以集群复制的,集群间通过Zab(Zookeeper Atomic Broadcast)协议来保持数据的一致性。该协议看起来像是Paxos协议的某种变形,该协议包括两个阶段:leader election阶段和Atomic broadcas阶段。集群中将选举出一个leader,其他的机器则称为follower,所有的写操作都被传送给leader,并通过broadcas将所有的更新告诉follower。当leader崩溃或者leader失去大多数follower时,需要重新选举出一个新的leader,让所有的服务器都恢复到一个正确的状态。当leader被选举出来,且大多数服务器完成了和leader的状态同步后,leader election的过程就结束了,将进入Atomic broadcas的过程。Atomic broadcas同步leader和follower之间的信息,保证leader和follower具有相同的系统状态。


 

Zookeeper的核心其实类似一个精简的文件系统,提供一些简单的操作和一些附件的抽象(例如:znode的排序与watch),并且集群的部署方式使其具有较高的可靠性。Zookeeper的协作过程简化了松散耦合系统之间的交互,即使参与者彼此不知道对方的存在,也能够相互发现并且完成交互。

 

集群搭建

配置ZOOKEEPER_HOME

sudo vi /etc/profile
export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper-3.4.8
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZOOKEEPER_HOME}/bin


配置之后,记得source /etc/profile 

 

创建两个文件夹zkdata和zkdatalog

mkdir zkdata
mkdir zkdatalog


 

配置zoo.cfg

cd conf
cp zoo_sample.cfg zoo.cfg


 

vi zoo.cfg

修改dataDir,添加dataLogDir,修改clientPort,防止端口已被占用(默认端口号前面加1,比如2181 > 12181, 2888:3888 > 12888:13888

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/home/hadoop/app/zookeeper-3.4.8/zkdata
dataLogDir=/home/hadoop/app/zookeeper-3.4.8/zkdatalog
# the port at which the clients will connect
clientPort=12181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.0=hadoop-0000:12888:13888
server.1=hadoop-0001:12888:13888
server.2=hadoop-0002:12888:13888


 

机器标识写入快照文件

cd zkdata
ls
echo 0 > myid
ls
cat myid


 

配置完hadoop-0000上的ZooKeeper之后,scp到hadoop-0001和hadoop-0002

scp -r /home/hadoop/app/zookeeper-3.4.8/ hadoop-0001:/home/hadoop/app/zookeeper-3.4.8
scp -r /home/hadoop/app/zookeeper-3.4.8/ hadoop-0002:/home/hadoop/app/zookeeper-3.4.8

scp之后,需要修改每个Server的机器标识


 

最后分别启动三台Server上的zookeeper

zkServer.sh start




 

查看Server状态

zkServer.sh status




 

查看目录情况

zkCli.sh -server-port 12181


 

jps查看进程


 

修改zookeeper默认的日志zookeeper.out以及日志文件位置

修改conf目录下的log4j.properties

zookeeper.root.logger=INFO, ROLLINGFILE


修改bin目录下的zkEnv.sh

ZOO_LOG_DIR="/home/hadoop/app/zookeeper-3.4.8/zkdatalog"
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"


 

重新启动zookeeper后,输出的日志文件就在自定义的zkdatalog目录下了


 

设置定时清理日志和快照

http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#Ongoing+Data+Directory+Cleanup

 

Reference

大型分布式网站架构设计与实践 陈康贤 著

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值