HBase中的HMaster、HRegionServer、Zookeeper
原文鏈接:http://blog.csdn.net/mm_bit/article/details/51304233
-----------------------------------
HMaster是Hbase主/從集群架構中的中央節點。通常一個HBase集群存在多個HMaster節點,其中一個為Active Master,其余為Backup Master.
Hbase每時每刻只有一個hmaster主服務器程序在運行,hmaster將region分配給region服務器,協調region服務器的負載并維護集群的狀態。Hmaster不會對外提供數據服務,而是由region服務器負責所有regions的讀寫請求及操作。
由于hmaster只維護表和region的元數據,而不參與數據的輸入/輸出過程,hmaster失效僅僅會導致所有的元數據無法被修改,但表的數據讀/寫還是可以正常進行的。
HMaster的作用:
- 為Region server分配region
- 負責Region server的負載均衡
- 發現失效的Region server并重新分配其上的region
- HDFS上的垃圾文件回收
- 處理schema更新請求
HRegionServer作用:
- 維護master分配給他的region,處理對這些region的io請求
- 負責切分正在運行過程中變的過大的region
可以看到,client訪問hbase上的數據并不需要master參與(尋址訪問zookeeper和region server,數據讀寫訪問region server),master僅僅維護table和region的元數據信息(table的元數據信息保存在zookeeper上),負載很低。 注意:master上存放的元數據是region的存儲位置信息,但是在用戶讀寫數據時,都是先寫到region server的WAL日志中,之后由region server負責將其刷新到HFile中,即region中。所以,用戶并不直接接觸region,無需知道region的位置,所以其并不從master處獲得什么位置元數據,而只需要從zookeeper中獲取region server的位置元數據,之后便直接和region server通信。 HRegionServer存取一個子表時,會創建一個HRegion對象,然后對表的每個列族創建一個Store實例,每個Store都會有一個MemStore和0個或多個StoreFile與之對應,每個StoreFile都會對應一個HFile, HFile就是實際的存儲文件。因此,一個HRegion有多少個列族就有多少個Store。 一個HRegionServer會有多個HRegion和一個HLog。 當HRegionServer意外終止后,HMaster會通過Zookeeper感知到。
Zookeeper作用在于:
? ? ? ? ? 1、hbase regionserver?向zookeeper注冊,提供hbase regionserver狀態信息(是否在線)。
? ? ? ? ? 2、hmaster啟動時候會將hbase系統表-ROOT-?加載到?zookeeper cluster,通過zookeeper cluster可以獲取當前系統表.META.的存儲所對應的regionserver信息。
?
zookeeper是hbase集群的"協調器"。由于zookeeper的輕量級特性,因此我們可以將多個hbase集群共用一個zookeeper集群,以節約大量的服務器。多個hbase集群共用zookeeper集群的方法是使用同一組ip,修改不同hbase集群的"zookeeper.znode.parent"屬性,讓它們使用不同的根目錄。比如cluster1使用/hbase-c1,cluster2使用/hbase-c2,等等。
-------------
更多的Java,Angular,Android,大數據,J2EE,Python,數據庫,Linux,Java架構師,:
http://www.cnblogs.com/zengmiaogen/p/7083694.html
總結
以上是生活随笔為你收集整理的HBase中的HMaster、HRegionServer、Zookeeper的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mos管开关电路_【电路】MOS管开关电
- 下一篇: Oracle数据库及在DOS命令下面的简