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的输入值;

猜你喜欢

转载自blog.csdn.net/abcdefghwelcome/article/details/84995362
今日推荐