ZooKeeper的安裝與配置

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,則輸出內容以下:
相關文章
相關標籤/搜索