[[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 程序就說明安裝成功了。
二、叢集下安裝ZooKeeperZooKeeper叢集中有兩個關鍵的角色: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,則輸出内容如下:
如果該機器為Follower,則輸出内容如下:
轉載于:https://my.oschina.net/u/2328578/blog/399345