儲存架構
部署架構
訪問流程
部分api
擴容方便。新增節點後執行rebalance即可。
缺點:
對比關係型資料庫:
master負責跨region server的操作,如建表、移動region、合併region等。
zk管理所有的region server,包括meta節點的位址。
hfile:memstore滿了之後生成新的hfile,由塊組成,每個塊包括:
meta:元資料塊,檔案關閉時寫入。
fileinfo:檔案資訊,比如最後乙個key,檔案關閉時寫入。
dataindex:資料塊的索引。
metaindex:元資料塊索引。
trailer:各個塊的偏移值。
hdfs上的檔案只能建立、刪除、追加,不能修改。wal:基於hdfs,雖然已經持久化,但是時暫存日誌,不區分store,不能直接讀取。wal按照寫入順序排序,經過memstore按照rowkey順序排序。
memstore:整理成lsm樹。
刷寫(定時任務)之前,memstore容量如果到達阻塞閾值會暫停memstore的寫入,可通過調大jvm堆解決。
hfile:memstore達到尺寸上限或者刷寫間隔,刷到hdfs
minor compaction:store中的多個hfile合併為乙個,達到ttl的資料會被移除。
major compaction:store中的所有hfile合併為乙個,達到ttl的和手動刪除的資料會被移除。
從zk上查有hbase:meta表的region server (meta節點)。
連線meta節點獲取所有region的行鍵範圍,並且快取該meta資訊。
直連包含目標rowkey的region server操作。
blockcache:快取block塊。乙個region server只有乙個blockcache
memstore
hfile
中午不睡覺,寫點
開部落格第二天了,我發現寫部落格是一件很有樂趣的一件事,每天可以把自己的一些開發學習經驗或者是一些生活感受寫入部落格,和大家一起分享我的發現,我的無知,我的快樂,我的憂傷。每天能和大家在這個 一塊學習,一塊發現自己的錯誤,一塊汲取別人文章的精華,充實自己的大腦,這是一件很令人興奮不已的事情。當自己發...
hbase不建議有過多列簇
hbase本身對支援的列簇沒有數量限制,當我們建議列簇一般設在1 3之間。在hbase中呼叫api往對應的表中插入資料,會寫到menstore的,而menstore是一種記憶體結構,每個列簇對應乙個menstore。儲存在menstore中的資料在一定條件下會進行flush操作,每次flush的時候...
HBase讀取資料卡住長時間不返回的原因分析
這些天做hbase,但是遇到hbase連線上之後讀取資料的時候,一直卡在那兒,程式既不報錯也不結束,讓我好生糾結,困擾我一整天。現在問題終於解決,現在寫了一段demo 具體如下 public static void main string args throws ioexception catch ...