hbase 檔案訪問

2021-06-22 15:50:54 字數 1659 閱讀 7648

hmaster沒有單點問題,hbase中可以啟動多個hmaster,通過zookeeper的master election機制保證總有乙個master執行,hmaster在功能上主要負責table和region的管理工作:

1.       管理使用者對table的增、刪、改、查操作

2.       管理hregionserver的負載均衡,調整region分布

3.       在region split後,負責新region的分配

4.       在hregionserver停機後,負責失效hregionserver 上的regions遷移

hregionserver主要負責響應使用者i/o請求,向hdfs檔案系統中讀寫資料,是hbase中最核心的模組。

hregionserver內部管理了一系列hregion物件,每個hregion對應了table中的乙個region,hregion中由多個hstore組成。每個hstore對應了table中的乙個column family的儲存,可以看出每個column family其實就是乙個集中的儲存單元,因此最好將具備共同io特性的column放在乙個column family中,這樣最高效。

hstore儲存是hbase儲存的核心了,其中由兩部分組成,一部分是memstore,一部分是storefiles。memstore是sorted memory buffer,使用者寫入的資料首先會放入memstore,當memstore滿了以後會flush成乙個storefile(底層實現是hfile),當storefile檔案數量增長到一定閾值,會觸發compact合併操作,將多個storefiles合併成乙個storefile,合併過程中會進行版本合併和資料刪除,因此可以看出hbase其實只有增加資料,所有的更新和刪除操作都是在後續的compact過程中進行的,這使得使用者的寫操作只要進入記憶體中就可以立即返回,保證了hbase i/o的高效能。當storefiles compact後,會逐步形成越來越大的storefile,當單個storefile大小超過一定閾值後,會觸發split操作,同時把當前region split成2個region,父region會下線,新split出的2個孩子region會被hmaster分配到相應的hregionserver上,使得原先1個region的壓力得以分流到2個region上。下圖描述了compaction和split的過程:

在理解了上述hstore的基本原理後,還必須了解一下hlog的功能,因為上述的hstore在系統正常工作的前提下是沒有問題的,但是在分布式系統環境中,無法避免系統出錯或者宕機,因此一旦hregionserver意外退出,memstore中的記憶體資料將會丟失,這就需要引入hlog了。每個hregionserver中都有乙個hlog物件,hlog是乙個實現write ahead log的類,在每次使用者操作寫入memstore的同時,也會寫乙份資料到hlog檔案中(hlog檔案格式見後續),hlog檔案定期會滾動出新的,並刪除舊的檔案(已持久化到storefile中的資料)。當hregionserver意外終止後,hmaster會通過zookeeper感知到,hmaster首先會處理遺留的 hlog檔案,將其中不同region的log資料進行拆分,分別放到相應region的目錄下,然後再將失效的region重新分配,領取 到這些region的hregionserver在load region的過程中,會發現有歷史hlog需要處理,因此會replay hlog中的資料到memstore中,然後flush到storefiles,完成資料恢復。

Hbase 之訪問控制

許可權控制範圍包括庫級別 全域性 表級別 列簇級別和列級別,目前總共有五種級別,分別是 read r write w exec x create c admin a 其中exec 目前沒有使用,create,admin只涉及庫級別和表級別,列簇級別和列級別只涉及到 read 和write 許可權。h...

spark報錯無權訪問hbase

我在提交乙個乙個spark任務是,遇到乙個無權訪問hbase的異常,如下 org.apache.hadoop.hbase.ipc.remotewithextra ception org.apache.hadoop.hbase.security.accessdeniedexception org.ap...

hbase儲存結構及客戶端訪問hbase表的過程

要說明客戶端訪問 操作hbase表,先簡要說明hbase表的儲存結構。hbase最初有乙個表,則乙個表對應乙個region,隨著表增大,乙個region會分為多個region,即乙個表對應了多個region。region是hbase儲存的最小單位,不能分割,即乙個region內的資料只能存在乙個伺服...