天天看点

ZooKeeper的安装与配置

一、单机下安装ZooKeeper 1.下载并解压ZooKeeper

[[email protected] ~]$ tar -xzvf zookeeper-3.4.6.tar.gz

2. 配置ZooKeeper环境变量

 在/etc/profile文件中加入如下内容(红色部分):  #Set Java Environment  export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31  export JRE_HOME= $JAVA_HOME /jre  export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib/  export PATH=$PATH:$JAVA_HOME/bin/:$JRE_HOME/bin/

 #Set Hadoop Environment  export HADOOP_HOME=/home/hadoop/hadoop-1.2.1  export PATH=$PATH:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin/

 #Set Hive Environment  export HIVE_HOME=/home/hadoop/hive-1.0.0  export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/conf

  #Set ZooKeeper Environment  export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.6  export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf  保存退出后,执行 source /etc/profile,使其对当前终端生效。

3.在$ZOOKEEPER_HOME/conf目录下新建zoo.cfg文件

  zoo.cfg文件配置可参考该目录下的zoo_sample.cfg文件。设置的内容如下: # The number of milliseconds of each tick tickTime=2000 # the directory where the snapshot is stored. dataDir=/home/hadoop/tmp/zookeeper # the port at which the clients will connect clientPort=2181 配置项说明: tickTime:服务端与客户端之间交互的基本时间单元,用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的tickTime。 dataDir:保存ZooKeeper数据和日志的路径。 clientPort:客户端与ZooKeeper交互的端口,默认情况为2181.

4.启动ZooKeeper(验证是否安装成功)

[[email protected] bin]$ zkServer.sh start JMX enabled by default Using config: /home/hadoop/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [[email protected] bin]$ jps 11984 SecondaryNameNode 12064 JobTracker 9269 QuorumPeerMain 11878 DataNode 12182 TaskTracker 9288 Jps 11768 NameNode 启动后,使用jps命令,有 QuorumPeerMain 进程就说明安装成功了。

二、集群下安装ZooKeeper

ZooKeeper集群中有两个关键的角色:Leader和Follwer。在整个集群运行的过程中,只有一个Leader节点,其他都是Follwer节点,所有节点之间都能保证互相连接。如果在ZooKeeper集群运行过程中Leader出了问题,系统会使用Leader election选举算法重新选出一个Leader。当然,在ZooKeeper集群启动时,也会用Leader election算法选举出一个Leader。 集群下安装ZooKeeper与单机下类似。

1.下载并解压ZooKeeper。 2. 配置ZooKeeper环境变量。 3.在$ZOOKEEPER_HOME/conf目录下新建zoo.cfg文件

# 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. dataDir=/home/hadoop/tmp/zookeeper # the port at which the clients will connect clientPort=2181 # the location  of the log file dataLogDir= /home/hadoop/tmp/zookeeper

server.1=192.168.3.150:2888:3888 server.2=192.168.3.151:2888:3888 server.3=192.168.3.152:2888:3888 配置项说明: initLimit:initLimit  is timeouts ZooKeeper uses to limit the length of time the ZooKeeper servers in quorum have to connect to a leader.   syncLimit:表示Leader与Follower之间发送消息时请求和应答的时间长度。如Follwer在设定时间内不能与Leader通信,那么此Follwer将被丢弃。initLimit与syscLimit的时间单元为tickTime。 dataLogDir:事务日志存放的目录。 server.id: “server.id=host:port1:port2”标识不同的zooKeeper服务器 .id标识不同的服务器,其值必须与服务器dataDir目录下的myid文件中的值一样,myid文件仅含一行内容就是其自身的id值,需要我们自己创建。host是服务器的主机名(也可直接使用ip地址),port1用于从follower机器与leader机器交换信息时的端口,port2用于进行leader选举时相互通信的端口。 注意:我们需要在每台机器的dataDir目录下新建一个myid文件,文件中写入各自机器对应的id值(1-255)。

4.在每台机器上,使用如下命令启动ZooKeeper

[[email protected] bin]$  zkServer.sh start

5.验证是否启动成功

[email protected]:~$ zkServer.sh status

如果该机器为Leader,则输出内容如下:

ZooKeeper的安装与配置

如果该机器为Follower,则输出内容如下:

ZooKeeper的安装与配置

转载于:https://my.oschina.net/u/2328578/blog/399345