Zookeeper之介紹和安裝環境準備
zookeeper概述
ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。 Zookeeper是一個分散式協調服務;就是為使用者的分散式應用程式提供協調服務 |序號 |功能 | |--|--| |1 |為別的分散式程式服務的| |2 |本身就是一個分散式程式| |3 |主從協調 伺服器節點動態上下線 統一配置管理 分散式共享鎖 一名稱服務| |4 |管理(儲存,讀取)使用者程式提交的資料 併為使用者程式提供資料節點監聽服務|
Zookeeper的叢集機制
zookeeper是為其他分散式程式提供服務的,所以本身自己不能隨便就掛了,所以zookeeper自身的叢集機制就很重要。zookeeper的叢集機制採用的是半數存活機制,也就是整個叢集節點中有半數以上的節點存活,那麼整個叢集環境可用。這也就是說們的叢集節點最好是奇數個節點。
zookeeper叢集節點的角色
Leader
Leader伺服器是Zookeeper叢集工作的核心,其主要工作如下
事務請求的唯一排程和處理者,保證叢集事務處理的順序性。 叢集內部各伺服器的排程者。
Follower
Follower是Zookeeper叢集的跟隨者,其主要工作如下
處理客戶端非事務性請求(讀取資料),轉發事務請求給Leader伺服器。 參與事務請求Proposal的投票。 參與Leader選舉投票。
叢集環境準備
準備3個節點
|ip | 主機名 | |--|--| |192.168.119.20 | zek00| | 192.168.119.21 | zek01 | | 192.168.119.22 | zek02 |
配置ip地址(其他兩個如此參上)
刪除 HWADDR這行資訊
節點的對映關係
其他兩個節點也這樣配置 刪除一個檔案 三個節點修改主機名 重啟
配置免密登入
ssh-keygen
四次回車即可 然後四次回車就可以了,然後就可以在當前登入使用者的主目錄下可以檢視到.ssh目錄,公鑰和私鑰就儲存在該目錄中
傳送公鑰給需要免密登入的節點
ssh-copy-id zek00 ssh-copy-id zek01 ssh-copy-id zek02
分別傳送給各個節點,自身也需要傳送。 然後在其他兩個節點上重複此步驟
關閉防火牆
重啟後生效(永久關閉) 開啟: chkconfig iptables on 關閉: chkconfig iptables off
即時生效,重啟後失效 開啟: service iptables start 關閉: service iptables sto
zookeeper叢集搭建
下載地址:http://mirror.bit.edu.cn/apache/zookeeper/ linux下載命令
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
解壓縮命令
tar -zxvf zookeeper-3.4.14.tar.gz
配置檔案
修改的地方有兩處:
修改zookeeper儲存資料的位置
新增叢集節點資訊
# 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.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/root/zookeeper/zkdata
dataLogDir=/root/zookeeper/zklog
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
#zookeeper配置埠
server.1=zek00:2888:3888
server.2=zek01:2888:3888
server.3=zek02:2888:3888
myid配置
在 zookeeper的資料的儲存目錄中建立 myid檔案,本文既是zkData目錄下,這個myid中的內容只有一行資訊,即表示我們叢集節點的標示,範圍在1~255之間。每個節點中的myid的數字和我們在zoo.cfg中的server.數字=host…對應, 建立這塊Data目錄:
mkdir zkData
echo 3 > zkData/myid
分發安裝檔案
將我們hadoop-node01上安裝配置的環境分發到hadoop-node02和hadoop-node03兩個節點相同的目錄下: 確認分發成功後分別修改zek00和zek01上的myid的值分別為1,2
配置環境變數
用上面分發檔案的方法:(scp 引數 目的地主機名 路徑) 傳送給其他兩個節點,此配置不用在安裝根目錄下啟動
啟動
zkServer.sh start
檢視狀態,分別在每個節點上執行
./bin/zkServer.sh status
zek00 zek01 zek02