1. 程式人生 > >hbase讀寫原理(2)

hbase讀寫原理(2)

HBase的原理

7.1體系圖

7.2寫流程

 

  1. 客戶端向HregionServer傳送請求
  2. HregionServer將資料寫到hlog(提前寫入日誌)。為了資料的持久化和恢復
  3. HregionServer將資料寫到記憶體(memstore)
  4. 反饋客戶端寫成功。

7.1.2資料flush過程7.2

 

  1. 當memstore資料達到閾值(預設是64M),
  2. 將資料刷硬碟,將記憶體中的資料刪除,同時刪除Hlog中的歷史資料
  3. 並將資料儲存到hdfs中。
  4. 在hlog中做標記點。

7.1.3資料合併過程

 

  1. 當資料塊達到4塊,hmaster將資料塊載入到本地,進行合併
  2. 當合並的資料超過256M,進行拆分,將拆分後額的區域分配給不同的HregionServer管理
  3. 當HregionServer宕機後,將HregionServer上的hlog拆分,然後分配給不同的HregionServer載入,修改META
  4. 注意:hlog會同步到hdfs

7.1.4 Hmaster的職責

 

  1.   管理使用者對錶的增,刪,改,查操作
  2.   記錄區域在哪裡HregionServer上
  3.   在地區拆分後,負責新的地區的分配
  4.   新機器加入是,管理HregionServer的負載均衡,調整地區分佈
  5.   在HregionServer宕機後,負責失敗HregionServer上的區域遷移

  
  7.1.6 HregionServer的職責

 

  1.   HregionServer主要負責響應使用者I / O請求,向HDFS檔案系統中讀寫資料,是HBASE中最核心的模組
  2.   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的輸入值;