天天看點

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