1. 程式人生 > >ZooKeeper學習第三期—Zookeeper命令操作

ZooKeeper學習第三期—Zookeeper命令操作

ZooKeeper學習第三期—Zookeeper命令操作

一、Zookeeper的四字命令

Zookeeper支援某些特定的四字命令字母與其的互動。他們大多數是查詢命令,用來獲取Zookeeper服務的當前狀態及相關資訊。使用者在客戶端可以通過telnet或nc向Zookeeper提交相應的命令。Zookeeper常用的四字命令見下圖所示。

上圖,是Zookeeper四字命令的一個簡單用例。

複製程式碼
[[email protected] ~]# echo ruok|nc localhost 2181
[[email protected] ~]# zkServer.sh start zoo1.cfg JMX enabled by default Using config: /usr/local/zk/bin/../conf/zoo1.cfg Starting zookeeper ... STARTED [[email protected] ~]# zkServer.sh start zoo2.cfg JMX enabled by default Using config: /usr/local/zk/bin/../conf/zoo2.cfg Starting zookeeper ... STARTED [
[email protected]
~]# zkServer.sh start zoo3.cfg JMX enabled by default Using config: /usr/local/zk/bin/../conf/zoo3.cfg Starting zookeeper ... STARTED [[email protected] ~]# echo ruok|nc localhost 2181 imok[[email protected] ~]# echo ruok|nc localhost 2182 imok[[email protected] ~]# echo ruok
|nc localhost 2183
imok[[email protected] ~]# echo conf|nc localhost 2181 clientPort=2181 dataDir=/usr/local/zk/data_1/version-2 dataLogDir=/usr/local/zk/logs_1/version-2 tickTime=2000 maxClientCnxns=60 minSessionTimeout=4000 maxSessionTimeout=40000 serverId=0 initLimit=10 syncLimit=5 electionAlg=3 electionPort=3387 quorumPort=2287 peerType=0 [[email protected] ~]#
複製程式碼

二、Zookeeper的簡單操作

2.1  Zookeeper的shell操作

2.1.1 Zookeeper命令工具

再啟動Zookeeper服務之後,輸入以下命令,連線到Zookeeper服務:

    zkCli.sh -server localhost:2181

執行結果如下所示:

[[email protected] ~]# zkCli.sh -server localhost:2181
Connecting to localhost:2181
2014-10-17 03:35:51,051 [myid:] - INFO  [main:[email protected]100] - Client environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT
2014-10-17 03:35:51,055 [myid:] - INFO  [main:[email protected]100] - Client environment:host.name=hadoop
2014-10-17 03:35:51,057 [myid:] - INFO  [main:[email protected]100] - Client environment:java.version=1.6.0_24
2014-10-17 03:35:51,057 [myid:] - INFO  [main:[email protected]100] - Client environment:java.vendor=Sun Microsystems Inc.
2014-10-17 03:35:51,066 [myid:] - INFO  [main:[email protected]100] - Client environment:java.home=/usr/local/jdk/jre
2014-10-17 03:35:51,079 [myid:] - INFO  [main:[email protected]100] - Client environment:java.class.path=/usr/local/zk/bin/../build/classes:/usr/local/zk/bin/../build/lib/*.jar:/usr/local/zk/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zk/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zk/bin/../lib/netty-3.2.2.Final.jar:/usr/local/zk/bin/../lib/log4j-1.2.15.jar:/usr/local/zk/bin/../lib/jline-0.9.94.jar:/usr/local/zk/bin/../zookeeper-3.4.5.jar:/usr/local/zk/bin/../src/java/lib/*.jar:/usr/local/zk/bin/../conf:
2014-10-17 03:35:51,083 [myid:] - INFO  [main:[email protected]] - Client environment:java.library.path=/usr/local/jdk/jre/lib/i386/client:/usr/local/jdk/jre/lib/i386:/usr/local/jdk/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
2014-10-17 03:35:51,084 [myid:] - INFO  [main:[email protected]] - Client environment:java.io.tmpdir=/tmp
2014-10-17 03:35:51,086 [myid:] - INFO  [main:[email protected]] - Client environment:java.compiler=<NA>
2014-10-17 03:35:51,099 [myid:] - INFO  [main:[email protected]] - Client environment:os.name=Linux
2014-10-17 03:35:51,100 [myid:] - INFO  [main:[email protected]] - Client environment:os.arch=i386
2014-10-17 03:35:51,101 [myid:] - INFO  [main:[email protected]] - Client environment:os.version=2.6.32-358.el6.i686
2014-10-17 03:35:51,101 [myid:] - INFO  [main:[email protected]] - Client environment:user.name=root
2014-10-17 03:35:51,102 [myid:] - INFO  [main:[email protected]] - Client environment:user.home=/root
2014-10-17 03:35:51,106 [myid:] - INFO  [main:[email protected]] - Client environment:user.dir=/root
2014-10-17 03:35:51,120 [myid:] - INFO  [main:[email protected]] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 [email protected]
Welcome to ZooKeeper!
JLine support is enabled
2014-10-17 03:35:51,233 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (Unable to locate a login configuration)
2014-10-17 03:35:51,247 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Socket connection established to localhost/127.0.0.1:2181, initiating session
[zk: localhost:2181(CONNECTING) 0] 2014-10-17 03:35:51,290 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x491da0e20b0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

[zk: localhost:2181(CONNECTED) 0]

View Code

  連線成功之後,系統會輸出Zookeeper的相關環境及配置資訊,並在螢幕輸出“welcome to Zookeeper!”等資訊。輸入help之後,螢幕會輸出可用的Zookeeper命令,如下圖所示

2.1.2 使用Zookeeper命令的簡單操作步驟

(1) 使用ls命令檢視當前Zookeeper中所包含的內容:ls /

[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 2]

(2) 建立一個新的Znode節點”zk”,以及和它相關字元,執行命令:create /zk myData

[zk: localhost:2181(CONNECTED) 2] create /zk myData
Created /zk

(3) 再次使用ls命令來檢視現在Zookeeper的中所包含的內容:ls /

[zk: localhost:2181(CONNECTED) 3] ls /
[zk, zookeeper]

此時看到,zk節點已經被建立。  

(4) 使用get命令來確認第二步中所建立的Znode是否包含我們建立的字串,執行命令:get /zk

複製程式碼
[zk: localhost:2181(CONNECTED) 4] get /zk
myData
cZxid = 0x500000006
ctime = Fri Oct 17 03:54:20 PDT 2014
mZxid = 0x500000006
mtime = Fri Oct 17 03:54:20 PDT 2014
pZxid = 0x500000006
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
複製程式碼

(5) 接下來通過set命令來對zk所關聯的字串進行設定,執行命令:set /zk jiang1234

複製程式碼
[zk: localhost:2181(CONNECTED) 5] set /zk jiang2014
cZxid = 0x500000006
ctime = Fri Oct 17 03:54:20 PDT 2014
mZxid = 0x500000007
mtime = Fri Oct 17 03:55:50 PDT 2014
pZxid = 0x500000006
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0
複製程式碼

(6) 再次使用get命令來檢視,上次修改的內容,執行命令:get /zk

複製程式碼
[zk: localhost:2181(CONNECTED) 6] get /zk
jiang2014
cZxid = 0x500000006
ctime = Fri Oct 17 03:54:20 PDT 2014
mZxid = 0x500000007
mtime = Fri Oct 17 03:55:50 PDT 2014
pZxid = 0x500000006
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0
複製程式碼

(7) 下面我們將剛才建立的Znode刪除,執行命令:delete /zk

[zk: localhost:2181(CONNECTED) 7] delete /zk

(8) 最後再次使用ls命令檢視Zookeeper中的內容,執行命令:ls /

[zk: localhost:2181(CONNECTED) 8] ls /
[zookeeper]

經過驗證,zk節點已經刪除。

2.2 Zookeeper的api的簡單使用

2.2.1 ZookeeperAPI簡介

Zookeeper API共包含五個包,分別為:

  (1)org.apache.zookeeper
  (2)org.apache.zookeeper.data
  (3)org.apache.zookeeper.server
  (4)org.apache.zookeeper.server.quorum
  (5)org.apache.zookeeper.server.upgrade

其中org.apache.zookeeper,包含Zookeeper類,他是我們程式設計時最常用的類檔案。這個類是Zookeeper客戶端的主要類檔案。如果要使用Zookeeper服務,應用程式首先必須建立一個Zookeeper例項,這時就需要使用此類。一旦客戶端和Zookeeper服務建立起了連線,Zookeeper系統將會給次連線會話分配一個ID值,並且客戶端將會週期性的向伺服器端傳送心跳來維持會話連線。只要連線有效,客戶端就可以使用Zookeeper API來做相應處理了。

Zookeeper類提供瞭如下圖所示的幾類主要方法

相關推薦

ZooKeeper學習三期---Zookeeper命令操作

一、Zookeeper的四字命令 Zookeeper支援某些特定的四字命令字母與其的互動。他們大多數是查詢命令,用來獲取Zookeeper服務的當前狀態及相關資訊。使用者在客戶端可以通過telnet或nc向Zookeeper提交相應的命令。Zookeeper常用的四字命令見下圖所示。 下圖,是Zoo

ZooKeeper學習三期Zookeeper命令操作

ZooKeeper學習第三期—Zookeeper命令操作 一、Zookeeper的四字命令 Zookeeper支援某些特定的四字命令字母與其的互動。他們大多數是查詢命令,用來獲取Zookeeper服務的當前狀態及相關資訊。使用者在客戶端

ZooKeeper學習三期---zookeeper常用配置

基本配置 clientPort 該引數無預設值,必須配置,不支援系統屬性方式配置。引數clientPort用於配置當前伺服器對外的伺服器埠,客戶端會通過該埠和Zookeeper伺服器建立連線,一般設定為2181。每臺Zookeeper伺服器都可以配置任意可用的埠,同時,叢集

ZooKeeper學習二期–ZooKeeper安裝配置

ZooKeeper學習第二期–ZooKeeper安裝配置 一、Zookeeper的搭建方式 Zookeeper安裝方式有三種,單機模式和叢集模式以及偽叢集模式。 ■ 單機模式:Zookeeper只執行在一臺伺服器上,適合測試環

ZooKeeper學習一期—Zookeeper簡單介紹

ZooKeeper學習第一期—Zookeeper簡單介紹 一、分散式協調技術 在給大家介紹ZooKeeper之前先來給大家介紹一種技術——分散式協調技術。那麼什麼是分散式協調技術?那麼我來告訴大家,其實分散式協調技術主要用來解決分散式

ZooKeeper學習七期--ZooKeeper一致性原理

一、ZooKeeper 的實現 1.1 ZooKeeper處理單點故障 我們知道可以通過ZooKeeper對分散式系統進行Master選舉,來解決分散式系統的單點故障,如圖所示。 圖 1.1 ZooKeeper解決單點故障 那麼我們繼續分析一下,ZooKeeper通過Master選舉來幫助分散

ZooKeeper學習八期——ZooKeeper伸縮性

一、ZooKeeper中Observer 1.1 ZooKeeper角色 經過前面的介紹,我想大家都已經知道了在ZooKeeper叢集當中有兩種角色Leader和Follower。Leader可以接受client 請求,也接收其他Server轉發的寫請求,負責更新系統狀態。 Follower也可以接收

ZooKeeper學習六期---ZooKeeper機制架構

一、ZooKeeper許可權管理機制  1.1 許可權管理ACL(Access Control List)  ZooKeeper 的許可權管理亦即ACL 控制功能,使用ACL來對Znode進行訪問控制。ACL的實現和Unix檔案訪問許可非常相似:它使用許可位來對一個節點的不同操作進行允許或禁止的權 限

ZooKeeper學習五期--ZooKeeper管理分散式環境中的資料

引言 本節本來是要介紹ZooKeeper的實現原理,但是ZooKeeper的原理比較複雜,它涉及到了paxos演算法、Zab協議、通訊協議等相關知 識,理解起來比較抽象所以還需要藉助一些應用場景,來幫我們理解。由於內容比較多,一口氣吃不成胖子,得慢慢來一步一個腳印,因此我對後期 ZooKeeper的學習規

ZooKeeper學習四期---構建ZooKeeper應用

一、配置服務 配置服務是分散式應用所需要的基本服務之一,它使叢集中的機器可以共享配置資訊中那些公共的部分。簡單地說,ZooKeeper可以作為一個具有高可用性的配置儲存器,允許分散式應用的參與者檢索和更新配置檔案。使用ZooKeeper中的觀察機制,可以建立一個活躍的配置服務,使那些感興趣的客戶端能夠獲得

ZooKeeper學習七期–ZooKeeper一致性原理

ZooKeeper學習第七期–ZooKeeper一致性原理 <div class="postBody"> <div id="cnblogs_post_body" class="blogpost-body"><h2

ZooKeeper學習六期—ZooKeeper機制架構

ZooKeeper學習第六期—ZooKeeper機制架構 一、ZooKeeper許可權管理機制  1.1 許可權管理ACL(Access Control List)  ZooKeeper 的許可權管理亦即ACL 控制功能,使用

ZooKeeper學習五期–ZooKeeper管理分散式環境中的資料

ZooKeeper學習第五期–ZooKeeper管理分散式環境中的資料 引言 本節本來是要介紹ZooKeeper的實現原理,但是ZooKeeper的原理比較複雜,它涉及到了paxos演算法、Zab協議、通訊協議等相關知識,理解起來比較抽

ZooKeeper學習四期—構建ZooKeeper應用

ZooKeeper學習第四期—構建ZooKeeper應用 一、配置服務 配置服務是分散式應用所需要的基本服務之一,它使叢集中的機器可以共享配置資訊中那些公共的部分。簡單地說,ZooKeeper可以作為一個具有高可用性的配置儲存器,允許分

ZooKeeper學習第一期---Zookeeper簡單介紹

ted 命名空間 不同之處 分布式系統 ast margin .html 為我 找到 一、分布式協調技術 在給大家介紹ZooKeeper之前先來給大家介紹一種技術——分布式協調技術。那麽什麽是分布式協調技術?那麽我來告訴大家,其實分布式協調技術主要用來解決分布式環境當中多

ZooKeeper學習第二期--ZooKeeper安裝配置

一、Zookeeper的搭建方式 Zookeeper安裝方式有三種,單機模式和叢集模式以及偽叢集模式。 ■ 單機模式:Zookeeper只執行在一臺伺服器上,適合測試環境; ■ 偽叢集模式:就是在一臺物理機上執行多個Zookeeper 例項; ■ 叢集模式:Zookeepe

python自動化運維學習五天--檔案操作

迴圈遍歷檔案 使用open來開啟檔案 開啟模式: r:以讀方式開啟(只能開啟存在的檔案) w:以寫方式開啟(會覆蓋存在的檔案,檔案不存在會建立) a:以追加方式開啟(檔案不存在會建立) r+:以讀寫方式開啟 w+:以讀寫方式開啟(參考w) a+:

python學習-------三天(操作列表)

                                          操作列表 1、遍歷整個列表         1.1使用for()迴圈       1.2在for()迴圈中執行更多的 操作 相比前一段程式碼,本唯一的不同是對於每位魔術

(轉載)ZooKeeper學習第一期---Zookeeper簡單介紹

一、分散式協調技術 在給大家介紹ZooKeeper之前先來給大家介紹一種技術——分散式協調技術。那麼什麼是分散式協調技術?那麼我來告訴大家,其實分散式協調技術 主要用來解決分散式環境當中多個程序之間的同步控制,讓他們有序的去訪問某種臨界資源,防止造成”髒資料”的後果。這時,有人可能會說這個簡單,寫一個調 度

ZooKeeper學習筆記-2---ZooKeeper部署與執行

1.環境配置 系統環境:ZooKeeper對於不同平臺都有良好的支援,可以再目前大多數主流的作業系統上正常執行,例如GUN/Linux、Sun Solaris、Win32以及MacOSX等。有一點需要注意,由於FreeBSD系統的JVM對Java的NIO Se