Zookeeper服务器集群的搭建与操作
ZooKeeper
作用:Zookeeper?可以用來保證數據在zk集群之間的數據的事務性一致(原子操作)。
介紹:Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分布式協調服務。
?它包含一個簡單的原語集,分布式應用程序可以基于它實現同步服務,配置維護和命名服務等。
特性:簡單的、富有表現力的、具有高可用性、采用松耦合交互方式、是一個資源庫。
?
如何搭建ZooKeeper服務器集群
2.1 ZooKeeper服務器集群規模不小于3個節點,要求各服務器之間系統時間要保持一致。
2.2 在hadoop0的/usr/local目錄下,解壓縮zookeeper-3.4.5.tar.gz(tar -zxvf zookeeper-3.4.5.tar.gz),
設置環境變量vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zk
export PATH=.:$....:$ZOOKEEPER_HOME/bin:$.....
環境變量設置好了,執行source /etc/profile
2.3 在conf目錄下
重命名: mv zoo_sample.cfg zoo.cfg
2.4 編輯該文件,執行vi zoo.cfg
修改dataDir=/usr/local/zk/data
新增server.0=hadoop0:2888:3888
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
2.5 創建文件夾mkdir /usr/local/zk/data
2.6 在data目錄下,創建文件myid(vi myid),值為0
2.7 把zk目錄復制到hadoop1和hadoop2中
scp -r /usr/local/zk/ hadoop1:/usr/local/
scp -r /usr/local/zk/ hadoop2:/usr/local/
將hadoop0中的環境變量復制到hadoop1和hadoop2中
scp /etc/profile hadoop1:/etc/
scp /etc/profile hadoop2:/etc/
環境變量復制好了以后,在hadoop1和hadoop2上都要執行source /etc/profile
2.8 把hadoop1中相應的myid的值改為1
vi /usr/local/zk/data/myid 將里面的值改為1
把hadoop2中相應的myid的值改為2
vi /usr/local/zk/data/myid 將里面的值改為2
2.9 啟動,在三個節點上分別執行命令zkServer.sh start
cd /usr/local/zk/bin
ls
zkServer.sh start
啟動完了之后,在bin目錄下多了一個zookeeper.out
2.10 檢驗,在三個節點上分別執行命令zkServer.sh status(可以看到MODE,誰是leader,誰是follower)
?
ZooKeeper的操作(只有shell操作,也可以用java操作)
在hadoop0下,執行zkCli.sh ,就進入到了ZooKeeper,可以在里面使用命令進行相關操作:
ls /
create /chaoren hadoop (/chaoren是path,hadoop是里面的data)
get /chaoren (可以查看到里面的data)
也可以在hadoop1或hadoop2里面:
zkCli.sh
get /chaoren
也可以修改里面的data:
set /chaoren change_data (將chaoren里面的data修改為change_data)
get /chaoren
?
ZooKeeper的數據模型
層次化的目錄結構,命名符合常規文件系統規范
每個節點在zookeeper中叫做znode,并且其有一個唯一的路徑標識
節點Znode可以包含數據和子節點,但是EPHEMERAL類型的節點不能有子節點
Znode中的數據可以有多個版本,比如某一個路徑下存有多個數據版本,那么查詢這個路徑下的數據就需要帶上版本
客戶端應用可以在節點上設置監視器
節點不支持部分讀寫,而是一次性完整讀寫
?
Zookeeper的節點
Znode有兩種類型,短暫的(ephemeral)和持久的(persistent)
Znode的類型在創建時確定并且之后不能再修改
短暫znode的客戶端會話結束時,zookeeper會將該短暫znode刪除,短暫znode不可以有子節點
持久znode不依賴于客戶端會話,只有當客戶端明確要刪除該持久znode時才會被刪除
Znode有四種形式的目錄節點,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL
?
Zookeeper的角色
領導者(leader),負責進行投票的發起和決議,更新系統狀態
學習者(learner),包括跟隨者(follower)和觀察者(observer),follower用于接受客戶端請求并想客戶端返回結果,在選主過程中參與投票
Observer可以接受客戶端連接,將寫請求轉發給leader,但observer不參加投票過程,只同步leader的狀態,observer的目的是為了擴展系統,提高讀取速度
客戶端(client),請求發起方
?
?
?
轉載于:https://www.cnblogs.com/ahu-lichang/p/6671272.html
總結
以上是生活随笔為你收集整理的Zookeeper服务器集群的搭建与操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神经网络公式推导
- 下一篇: SVG animation 回顾