日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache Zookeeper入门1

發布時間:2025/3/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Zookeeper入门1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

口水:Zookeeper是我目前接觸過Apache開源系統中比較復雜的一個產品,要搞清楚這個東東里面的運作關系還真不是一時半會可以搞定的事,本人目前只略知皮毛之術。

ZooKeeper 是什么?

? ZooKeeper 顧名思義 動物園管理員,他是拿來管大象(Hadoop)?、?蜜蜂(Hive)?、?小豬(Pig)? 的管理員, Apache Hbase和 Apache Solr 以及LinkedIn sensei??等項目中都采用到了 Zookeeper。ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,ZooKeeper是以Fast Paxos算法為基礎,實現同步服務,配置維護和命名服務等分布式應用。
?

ZooKeeper 如何工作?

? ZooKeeper是作為分布式應用建立更高層次的同步(synchronization)、配置管理 (configuration maintenance)、群組(groups)以及名稱服務(naming)。在編程上,ZooKeeper設計很簡單,所使用的數據模型風格很像文件系統的目錄樹結構,簡單來說,有點類似windows中注冊表的結構,有名稱,有樹節點,有Key(鍵)/Value(值)對的關系,可以看做一個樹形結構的數據庫,分布在不同的機器上做名稱管理。

?? Zookeeper分為2個部分:服務器端和客戶端,客戶端只連接到整個ZooKeeper服務的某個服務器上。客戶端使用并維護一個TCP連接,通過這個連接發送請求、接受響應、獲取觀察的事件以及發送心跳。如果這個TCP連接中斷,客戶端將嘗試連接到另外的ZooKeeper服務器。客戶端第一次連接到ZooKeeper服務時,接受這個連接的 ZooKeeper服務器會為這個客戶端建立一個會話。當這個客戶端連接到另外的服務器時,這個會話會被新的服務器重新建立。

?? 啟動Zookeeper服務器集群環境后,多個Zookeeper服務器在工作前會選舉出一個Leader,在接下來的工作中這個被選舉出來的Leader死了,而剩下的Zookeeper服務器會知道這個Leader死掉了,在活著的Zookeeper集群中會繼續選出一個Leader,選舉出leader的目的是為了可以在分布式的環境中保證數據的一致性。如圖所示:

? 另外,ZooKeeper 支持watch(觀察)的概念。客戶端可以在每個znode結點上設置一個觀察。如果被觀察服務端的znode結點有變更,那么watch就會被觸發,這個watch所屬的客戶端將接收到一個通知包被告知結點已經發生變化。若客戶端和所連接的ZooKeeper服務器斷開連接時,其他客戶端也會收到一個通知,也就說一個Zookeeper服務器端可以對于多個客戶端,當然也可以多個Zookeeper服務器端可以對于多個客戶端,如圖所示:

你還可以通過命令查看出,當前那個Zookeeper服務端的節點是Leader,哪個是Follower,如圖所示:

我通過試驗觀察到 Zookeeper的集群環境最好有3臺以上的節點,如果只有2臺,那么2臺當中不管那臺機器down掉,將只會剩下一個leader,那么如果有再有客戶端連接上來,將無法工作,并且剩下的leader服務器會不斷的拋出異常。內容如下:
java.net.ConnectException: Connection refused
??????? at sun.nio.ch.Net.connect(Native Method)
??????? at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:507)
??????? at java.nio.channels.SocketChannel.open(SocketChannel.java:146)
??????? at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:347)
??????? at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:381)
??????? at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:674)
??????? at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:611)
2010-11-15 00:31:52,031 – INFO? [QuorumPeer:/0:0:0:0:0:0:0:0:2181:FastLeaderElection@683] – Notification time out: 12800

并且客戶端連接時還會拋出這樣的異常,說明連接被拒絕,并且等待一個socket連接新的連接,這里socket新的連接指的是zookeeper中的一個Follower。
org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1000) Opening socket connection to server 192.168.50.211/192.168.50.211:2181??
org.apache.zookeeper.ClientCnxn$SendThread.primeConnection(ClientCnxn.java:908) Socket connection established to 192.168.50.211/192.168.50.211:2181, initiating session??
org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1118) Unable to read additional data from server sessionid 0×0, likely server has closed socket, closing socket connection and attempting reconnect??
org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1000) Opening socket connection to server localhost/127.0.0.1:2181??
?2010-11-15 13:31:56,626 WARN?? org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1120) Session 0×0 for server null, unexpected error, closing socket connection and attempting reconnect??
?

?先寫到這里,全面了解Zookeeper不太容易,光看Apache Zookeeper官方的wiki和文檔還不能對其有深入的了解,想閱讀Zookeeper中的部分源代碼。另外,本人目前正在學習和了解ing,歡迎大家與我交流,謝謝。

?

原文:http://www.javabloger.com/article/apache-zookeeper-hadoop.html

轉載于:https://blog.51cto.com/chenlx/746364

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的Apache Zookeeper入门1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。