zookeeper集群安装详解(Centos系统)

来源:互联网 发布:正规网络彩票关注网站 编辑:程序博客网 时间:2024/06/17 01:47

一、什么是Zookeeper

Zookeeper是一个分布式的开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

二、安装Zookepeer

1、下载Zookeeper

官网下载地址为(http://apache.fayea.com/zookeeper/)选择适合你的Zookeeper进行下载

2、上传到你的Linux电脑上


如果你是用的远程终端可以使用rz命令,然后找到想要上传的文件,点击打开,文件会被上传到使用rz的目录下(如我在~/aaa目录下使用rz命令文件就会在~/aaa目录中)

3、解压安装包

使用命令
tar -zxvf zookeeper-3.4.6.tar.gz 
解压后使用ls命令查看解压文件

4、(此步骤可忽略)移动或者给解压后的文件夹更改名称

这里我把该文件夹移动到主目录下
mv zookeeper-3.4.6 ~/

5、修改环境变量(如果你不怕使用命令麻烦的话可以不用修改)

这里我就修改用户环境变量吧,打开环境变量文本:
 vim ~/.bash_profile

添加上如下内容
export PATH=$PATH:/home/lws/zookeeper-3.4.6/bin
注意哦,这里/home/lws/zookeeper-3.4.6为你刚刚移动后的Zookeeper的目录哦!然后保存并退出
别忘了source ~/.bash_profile使修改后的环境变量生效哦而且所有节点都要配置哦

6、修改配置

进入刚刚你放置的Zookeeper目录下的conf目录
把zoo_sample.cfg复制为 zoo.cfg(zoo_sample.cfg 就是一个参考案例,可以按照上面的格式写)
使用命令:
cp zoo_sample.cfg zoo.cfg

打开复制的zoo.cfg使用命令:   
vim zoo.cfg

写上如下配置
# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/home/lws/zookeeper-3.4.6/data# the port at which the clients will connectclientPort=2181# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60#server.1=bogon:2888:3888server.2=cloing-1:2888:3888server.3=cloing-2:2888:3888# 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

比较重要的配置就是红色标识的配置
dataDir=/home/lws/zookeeper-3.4.6/data
dataDir该配置表示数据目录
server.1=bogon:2888:3888
server.2=cloing-1:2888:3888
server.3=cloing-2:2888:3888
“ server.id=host:port:port. ”示了不同的 ZooKeeper 服务器的自身标识,作为集群一部分的机器应该知道 ensemble 中的其它机器,用户可以从“ server.id=host:port:port. ”中读取相关的信息,第一个端口( port )是从( follower )机器连接到主( leader )机器的端口,第二个端口是用来进行 leader 选举的端。也就是说server.1、server.2、server.3表示三台Zookeeper服务,他们的编号为server后面小数点之后的数字,我这里为1、2、3、
然后后面的bogon、cloing-1、cloing-2为三个主机的主机名,在此需要注意我每一个结点的的/etc/hosts文件之中都有三台主机的映射,如下图所示

7、把整个安装的文件夹复制到其他主机上

在我这里复制的命令为
scp ~/zookeeper-3.4.6/ lws@cloing-1:~/scp ~/zookeeper-3.4.6/ lws@cloing-2:~/




注意这里lws为我的用户名,cloing-1和cloing-2为我的另外两台节点的主机hostname,你可以根据你自己的远程主机名来复制

8、建立myid文件

在你刚刚设立的dataDir目录下建立文件myid(注意三个节点都要建立myid文件,而且值各不相同)myid的值和server.3=cloing-2:2888:3888格式中server.id中的id相同
如我的bogon节点设置为
touch myidecho "1">myid

我的cloing-1节点设置为
touch myidecho "2">myid


我的cloing-2节点设置为
touch myidecho "3">myid



9、开启Zookeeper

使用命令
 zkServer.sh start

注意,每一个节点都要说如一次命令哦!
使用命令:
zkServer.sh status



查看运行状态、如图所示

Zookeeper在所有节点中会选举出一个leader其余的都为follower

10、部分配置详解

clientPort  监听客户端连接的端口;

initLimit  此配置示,允许 follower (相对于 leader 而言的“客户端”)连接并同步到 leader 的初始化连接时间,它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败。

syncLimit 此配置表示, leader 与 follower 之间发送消息,请求和应答时间长度。如果 follower 在设置的时间内不能与 leader 进行通信,那么此 follower 将被丢弃。

dataLogDir  这个操作将管理机器把事务日志写入到“ dataLogDir ”所指定的目录,而不是“  dataDir ”所指定的目录。这将允许使用一个专用的日志设备并且帮助我们避免日志和快照之间的竞争。配置如下: dataLogDir=/root/hadoop-0.20.2/zookeeper-3.3.1/log/data_log

maxClientCnxns  这个操作将限制连接到 ZooKeeper 的客户端的数量,限制并发连接的数量,它通过 IP 来区分不同的客户端。将它设置为 0 或者忽略而不进行设置将会取消对并发连接的限制。

minSessionTimeout 和 maxSessionTimeout  最小的会话超时时间以及最大的会话超时时间。其中,最小的会话超时时间默认情况下为 2 倍的 tickTme 时间,最大的会话超时时间默认情况下为 20 倍的会话超时时间。

jute.maxbuffer  每个节点最大数据量,是默认是1M。这个限制必须在server和client端都进行设置才会生效。


forceSync  这个参数确定了是否需要在事务日志提交的时候调用 FileChannel .force来保证数据完全同步到磁盘。


zookeeper.DigestAuthenticationProvider .superDigest  ZK权限设置

cnxTimeout  Leader选举过程中,打开一次连接的超时时间,默认是5s

group.x=nnnnn[:nnnnn]weight.x=nnnnn  对机器分组和权重设置

server.x=[hostname]:nnnnn[:nnnnn]  这里的x是一个数字,与myid文件中的id是一致的。右边可以配置两个端口,第一个端口用于F和L之间的数据同步和其它通信,第二个端口用于Leader选举过程中投票通信。

leaderServes  默认情况下,Leader是会接受客户端连接,并提供正常的读写服务。但是,如果你想让Leader专注于集群中机器的协调,那么可以将这个参数设置为no,这样一来,会大大提高写操作的性能。
autopurge.purgeInterval  在上文中已经提到,3.4.0及之后版本,ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能。

fsync.warningthresholdms  事务日志输出时,如果调用fsync方法超过指定的超时时间,那么会在日志中输出警告信息。默认是1000ms。

traceFile  记录所有请求的log






1 0
原创粉丝点击