首先先了解一下 ZooKeeper 是什麼?
- Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分佈式協調服務;
- 它包含一個簡單的原語集,分佈式應用程序可以基於它實現同步服務,配置維護和命名服務等
那麼ZooKeeper 又有什麼作用呢?用一張圖片來做一個簡單的瞭解
那麼hadoop 又爲什麼要用 ZooKeeper 來處理事件呢?
ZooKeeper能夠提供通用的分佈式鎖服務,用以協調分佈式應用;使用Zookeeper的事件處理確保整個集羣只有一個NameNode,存儲配置信息等.最主要的是ZooKeeper具有簡單、富有表現力、高可用性、採用鬆耦合交互方式等這些特性。
下面開始搭建一個Zookeeper的集羣
-
ZooKeeper集羣至少3個節點(hadoop0,hadoop1,hadoop2),並且節點之間的系統時間一致。
在hadoop0上,解壓縮、重命名、設置環境變量
在hadoop0的$ZOOKEEPER_HOME/conf下,mv zoo_sample.cfg zoo.cfg
-
編輯zoo.cfg文件
修改dataDir=/usr/local/zk/data
新增了三行 server.0=hadoop0:2888:3888
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
-
在hadoop0上, 創建目錄 mkdir -p /usr/local/zk/data
-
在data目錄中,創建文件myid,內容是0
-
把zk目錄、環境變量文件複製到hadoop1、hadoop2中
scp -r /usr/local/ZooKeeper hadoop1:/usr/local
-
在hadoop1、hadoop2中修改文件myid,把內容改爲1、2
-
在hadoop0、hadoop1、hadoop2上,分別執行啓動命令zkServer.sh start
-
查看節點Mode,執行命令zkServer.sh status
使用shell操作zookeeper
- 執行zkCli.sh進入ZooKeeper的shell環境
- 常見的操作:
ls /
create /example abcd
get /example
set /example asdfadsf
ZooKeeper的一個入門水平也差不多了