zookeeper是一個自動管理分散式集群的一個工具,以實現集群的高可用。 比如集群中的一個機器掛掉了,沒有zookeeper的話就得考慮掛一個機器對剩下集群工作的影響,而有了zookeeper,它就能自動幫你協調這些事兒。 正規的解釋如下: zookeeper是 一個開源的針對大型分散式系統的可靠 ...
zookeeper是一個自動管理分散式集群的一個工具,以實現集群的高可用。
比如集群中的一個機器掛掉了,沒有zookeeper的話就得考慮掛一個機器對剩下集群工作的影響,而有了zookeeper,它就能自動幫你協調這些事兒。
正規的解釋如下:
zookeeper是 一個開源的針對大型分散式系統的可靠協調系統。
設計目標是:將複雜且容易出錯的分散式式一致性服務封裝起來,構成一個高效可靠的原語集,
並以簡單易用的介面提供給用戶使用。
提供的功能包括:發佈/訂閱,分散式協調/通知,配置管理,集群管理,主從協調,分散式鎖等。
安裝與配置:
這裡用三台centos6.9mini虛擬機演示,主機名分別是h1、h2、h3,ip分別是192.168.227.11、192.168.227.22、192.168.227.33。
三台虛擬機都已創建了hadoop用戶,配了免密碼登錄。
軟體安裝路徑是/home/hadoop/apps/。
1. 下載解壓安裝包
解壓後,/home/hadoop/apps/zookeeper-3.4.10/下麵的文件
2. 創建軟連接
這一步要用root用戶操作,先切換到root用戶
語法:ln -s 源路徑 軟連接路徑
ln -s /home/hadoop/apps/zookeeper-3.4.10 /usr/local/zookeeper
修改zookeeper軟鏈接屬主為hadoop:
chown -R hadoop:hadoop /usr/local/zookeeper
3. 修改環境變數
用root用戶操作
vim /etc/profile
添加以下內容:
export JAVA_HOME=/usr/local/jdk
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:${ZOOKEEPER_HOME}/bin:${JAVA_HOME}/bin
添加並保存後,重新編譯環境變數:
source /etc/profile
(沒有jdk的先下載jdk)
4. 修改配置文件
zookeeper/conf是保存配置文件的文件夾
修改裡面的zoo.cfg文件
vi /conf/zoo.cfg
添加以下內容:
dataDir=/usr/local/zookeeper/data #快照文件存儲目錄
dataLogDir=/usr/local/zookeeper/log #事務日誌文件目錄
#(主機名, 心跳埠、數據埠)
server.1=h1:2888:3888
server.2=h2:2888:3888
server.3=h3:2888:3888
5. 創建運行需要的目錄
在zookeeper目錄下創建配置文件里寫的目錄
mkdir /usr/local/zookeeper/data
mkdir /usr/local/zookeeper/log
在data文件夾下新建myid文件,myid的文件內容為該節點的編號
cd data
touch myid
echo 1 >myid
6. 配置其餘兩個機器
用scp命令將整個zookeeper文件夾複製到其餘兩個機器上
scp -r /home/hadoop/apps/zookeeper-3.4.10 hadoop@h2:/home/hadoop/apps
scp -r /home/hadoop/apps/zookeeper-3.4.10 hadoop@h3:/home/hadoop/apps
然後按步驟2和步驟3分別對這兩個機器創建軟連接和修改環境變數。
將h2和h3機器里/hadoop/data/myid 中的數分別改成2和3。
至此就配置完了!
檢查一下各個主機的運行
h1、h2、h3 依次執行zkServer.sh start
jps查看進程:
三個都開啟後,執行zkServer.sh status查看zookeeper狀態:
h1
h2
h3
可以看到zookeeper能夠正常運行了。
數據存儲:
zookeeper以Znode形式存儲數據
類似於linux,但Znode可以存放數據
Znode類型:
持久節點、臨時節點、順序節點
組合:持久節點、持久順序節點
臨時節點、臨時順序節點
客戶端創建臨時節點後,當客戶端與服務端斷開連接後,臨時節點將被刪除,臨時節點下不允許有子節點
監聽機制使用:
即發佈訂閱功能
客戶端註冊一個監聽時間,當zookeeper上被監聽的時間發生變化時,會第一時間通知訂閱者
客戶端操作:
zkCli.sh 命令進入客戶端
create [選項] 路徑 值 #創建節點並賦值,不能不賦值
-s 順序型 -e 臨時型
set 路徑 值 #改變節點的值
get 路徑 #獲取節點的值
get 路徑 watch #監聽節點數據內容變化,只監聽一次
ls 路徑 watch #監聽節點目錄變化,只監聽一次
delete 路徑 #刪除一個節點,節點下不能有子節點
rmr 路徑 #刪除有子節點的目錄
cons #輸出所有客戶端的連接信息