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