hbase讀寫原理(2)
阿新 • • 發佈:2018-12-14
HBase的原理
7.1體系圖
7.2寫流程
- 客戶端向HregionServer傳送請求
- HregionServer將資料寫到hlog(提前寫入日誌)。為了資料的持久化和恢復
- HregionServer將資料寫到記憶體(memstore)
- 反饋客戶端寫成功。
7.1.2資料flush過程7.2
- 當memstore資料達到閾值(預設是64M),
- 將資料刷硬碟,將記憶體中的資料刪除,同時刪除Hlog中的歷史資料
- 並將資料儲存到hdfs中。
- 在hlog中做標記點。
7.1.3資料合併過程
- 當資料塊達到4塊,hmaster將資料塊載入到本地,進行合併
- 當合並的資料超過256M,進行拆分,將拆分後額的區域分配給不同的HregionServer管理
- 當HregionServer宕機後,將HregionServer上的hlog拆分,然後分配給不同的HregionServer載入,修改META
- 注意:hlog會同步到hdfs
7.1.4 Hmaster的職責
- 管理使用者對錶的增,刪,改,查操作
- 記錄區域在哪裡HregionServer上
- 在地區拆分後,負責新的地區的分配
- 新機器加入是,管理HregionServer的負載均衡,調整地區分佈
- 在HregionServer宕機後,負責失敗HregionServer上的區域遷移
7.1.6 HregionServer的職責
- HregionServer主要負責響應使用者I / O請求,向HDFS檔案系統中讀寫資料,是HBASE中最核心的模組
- HregionServer管理了很多表的分割槽,也就是區域
7.1.7客戶端職責
客戶端
HBASE客戶端使用HBASE的PRC機制與HMaster和regionserver進行通訊。
管理類操作:客戶端與HMaster進行RPC;
資料讀寫類操作:客戶端與HregionServer進行RPC
8 .MapReduce操作Hbase
8.1實現方法
Hbase對MapReduce提供支援,它實現TableMapper類和TableReduce類,我們只需要繼續這兩個類即可.1。寫入
mapper繼承TableMapper <Text,IntWritable>
引數:Text:mapper的輸出Key型別;
IntWritable:mapper的輸出值型別
其中的map方法如下:
map(immutableBytesWritable key,Result value,Context context)
引數:key:rowkey; value:結果,一行資料; context上下文
2。寫入reduce繼承TableReducer <Text,IntWritable,ImmutableBytesWritable>
引數:Text:reducer的輸入Key; intWritable:減速器的輸入值;
ImmutableBytesWritable:reduce的輸出到Hbase中的rowkey型別
其中的reduce方法如下:
reduce(Text Key,Iterable <IntWritable> values,Context context)
引數:key:reduce的輸入鍵; values:reducer的輸入值;