1、单机下安装ZooKeeper
1.下载并解压ZooKeeper
[hadoop@localhost ~]$
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(验证是否安装成功)
[hadoop@localhost bin]$ zkServer.sh start
JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@localhost bin]$
jps
11984 SecondaryNameNode
12064 JobTracker
9269
QuorumPeerMain
11878 DataNode
12182 TaskTracker
9288 Jps
11768 NameNode
启动后,使用jps命令,有
QuorumPeerMain
进程就说明安装成功了。
2、集群下安装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
[hadoop@localhost bin]$
zkServer.sh start
5.验证是否启动成功
hadoop@ubuntu:~$
zkServer.sh status
若是该机器为Leader,则输出内容以下:
若是该机器为Follower,则输出内容以下: