HBase講解
1.HBase在Hadoop中的位置
HBase(Hadoop Database)是一個開源的、面向列(Column-Oriented)、適合儲存海量非結構化資料或半結構化資料的、具備高可靠性、高效能、可靈活擴充套件伸縮的、支援實時資料讀寫的分散式儲存系統。
儲存在HBase中的表的典型特徵:
- 大表(BigTable):一個表可以有上億行,上百萬列
- 面向列:面向列的儲存、檢索與許可權控制
- 稀疏:表中為空(null)的列不佔用儲存空間
2.HBase叢集典型部署組網
1.png
Master:又叫HMaster,負責HBase中Table和Region的管理,包括表的增刪改查;Region Server的負載均衡,Region分佈調整;Region分裂以及分裂後的Region分配;Region Server失效後的Region遷移等。
ZooKeeper cluster:
RegionServer:負責資料路由、資料讀寫和資料持久化,是HBase 的資料處理和計算單元,同時還負責區域的分割(即Region Split)。 RegionServer要求和HDFS的DataNode一起部署。
3.HBase系統架構
2.png
HBase Client:Client使用HBase的RPC機制與HMaster、HRegionServer 進行通訊。 Client與HMaster進行管理類通訊,與HRegion Server進行資料操作類通訊。
HRegionServer:HRegionServer內部管理了一系列HRegion物件,每個HRegion對應Table中的一個Region。HRegion由多個Store組成。每個Store對應Table中的一個ColumnFamily的儲存,即一個Store管理一個Region上的一個列族(CF)。每個Store包含一個MemStore和0到多個StoreFile。 Store是HBase的儲存核心,由MemStore 和 StoreFile組成。
HLog:資料在寫入時,首先寫入預寫日誌(Write AheadLog),每個HRegionServer服務的所有Region的寫操作日誌都儲存在同一個日誌檔案中。資料並非直接寫入HDFS,而是等快取到一定數量再批量寫入,寫入完成後在日誌中做標記。
MemStore and StoreFile:MemStore是 一個有序的記憶體快取區,使用者寫入的資料首先放入MemStore,當MemStore滿了以後Flush成一個StoreFile(儲存時對應為HFile), 當StoreFile數量增到一定閾值,觸發Compact合併,將多個StoreFiles合併成一個StoreFile。StoreFiles 合併後逐步形成越來越大的StoreFile,當Region內所有StoreFiles(Hfile)的總大小超過閾值(hbase.hregion.max.filesize)即觸發分裂Split,把當前的Region Split成2個Region,父Region下線,新Split出的2個孩子Region被HMaster分配到合適的HRegionServer 上,使得原先1個Region的壓力得以分流到2個Region上。
4.HBase資料模型
儲存在HBase表每一行資料都有可排序的關鍵字(Row Key)和任意列項(Column &Column Family)。在HBase中,僅能通過主鍵(Row Key)和主鍵版本號來檢索資料,僅支援單行事務。下面以HBase儲存搜尋引擎的網頁為例:
3.png
Row Key:行鍵,相當於關係表的主鍵,每一行資料的唯一標識。字串、整數、二進位制串都可以作為RowKey。所有記錄按照RowKey排序後儲存。
Time Stamp:每次資料操作對應的時間戳,資料按時間戳區分版本,每個Cell的多個版本的資料按時間倒序儲存。
ColumnFamily:Column Family,列簇,一個表在水平方向上由一個或多個CF組成。一個CF可以由任意多個Column組成。Column是CF下的一個標籤,可以在寫入資料時任意新增,因此CF支援動態擴充套件,無需預先定義Column的數量和型別。 HBase中表的列非常稀疏,不同行的列的個數和型別都可以不同。此外,每個CF都有獨立的TTL(生存週期)。可以只對行上鎖,對行的操作始終是原始的。
5.HBase的物理儲存結構
建表時預設只有一個Region,如果指定Split Key,就會有多個Region。當表的記錄行超過閾值,表按水平方向分割成2個Region,可把Region理解為子表。當Region的行數超過閾值,Region繼續分裂。不同的Region被HMaster分配給合適的HRegionServer管理。每個Region都包含一個隨機ID,Region內的資料按照Row Key有序儲存。
11.PNG
HBase在進行資料儲存時,物理上將同“列簇”的資料儲存在一起,不同“列簇”的資料分開儲存。例如這裡的Store1-1對應儲存表Region1上的CF1的所有資料,底層實際儲存時為一個HFile。
114.PNG
HBase檔案目錄講解:
- HDFS在檔案系統根目錄下為HBase建立專用儲存目錄。
- 在HBase目錄下按照表名建立子目錄
- 在表名子目錄下存放HBase Region塊目錄
- 在Region塊目錄下按照所存放表的CF建立子目錄,同時該目錄下有一個固定的檔案regioninfo目錄
- regioninfo目錄下建立的檔案用來存放表的Scheme資訊
- Column Family下放置的是該CF的HFile檔案
作者:狼牙戰士
連結:https://www.jianshu.com/p/4e7c4ccf4020
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。