HBase系统架构,
阅读原文
摘要: 1 HBase整体架构 1.1 HMaster 1.2 HRegionServer 2 HBase 客户端读数据流程分析 3 HBase 客户端写数据流程分析 4 HBase服务端读数据流程分析 5 HBase服务端写数据流程分析 6 HBase服务端删除和increase操作 7 Region分...
1 HBase整体架构
1.1 HMaster
1.2 HRegionServer
2 HBase 客户端读数据流程分析
3 HBase 客户端写数据流程分析
4 HBase服务端读数据流程分析
5 HBase服务端写数据流程分析
6 HBase服务端删除和increase操作
7 Region分裂和合并问题分析
8 HBase主备集群数据同步分析
分享的目的
更进一步地深入掌握HBase的内核架构
1 HBase整体架构
整体架构图:
1.1 HMaster
1.2 HRegionServer
2 HBase 客户端读数据流程分析
流程图
第二或第二次以后读写数据
通过查找客户端本地的缓存,直接和相关的HRegionServer进行通信,进行相关的数据读操作;
3 HBase 客户端写数据流程分析
流程图
HBase服务端读写据流程分析
1. 服务端核心类:
org.apache.hadoop.hbase.regionserver.HRegion
2. HBase源码模块名称:
hbase-server
4 服务端读数据流程分析
以get(final Get get)为例进行分析
代码层面如下两个主要的方法:
scanner = getScanner(scan);
scanner.next(results);
HBase regionServer读取数据主要有两个步骤:
1. 根据Get对象生成相关的RegionScanner对象, 在这个过程中可以充分利用布隆过滤器和时间戳, RegionScanner对象主要包括多个StoreScanner,一个StoreScanner下面包含多个StoreFileScanner和一个MemStoreScanner,当然每个StoreFile下面有多个HFile;
2. 调用next方法, 即扫描StoreFile和和MemStore, 依次查找每一个每符合要求的cell(当然在查找的过程中会有相关的缓存,在这里提一下,阿里HBase团队出一种针对SSD存储的BucketCache),并填充结果集;
5 服务端写数据流程分析
注意: 如果一次put的数据比较 多,3的步骤要反复执行多次,并且每次循环都要先开始执行依次步骤1和
步骤2的检查操作。
重要: 在刷日志 这步骤中,需要根据建表时是否设置 同步写入WAL,以及WAL同步到HDFS中要求,会
有很大的不同,默认是写一次操作,WAL要刷一次HDFS, 这是最安全的,但写入性能不是很
高,设置 成异步刷盘(ASYNC_WAL)比较好性能最好(默认1s一次),这样丢失的数据最少,性能可
以接受,常见的设置有(SKIP_WAL, ASYNC_WAL, SYNC_WAL, FSYNC_WAL, 建表的时候设
置), 线上环境建议用默认值比较 好,刷日志的时候只写到HDFS,不会写到硬盘上, 而且性能也
非常好,毕竟 Hlog是顺序文件 ,在HDFS中是append操作;
6 HBase服务端删除和increase操作
delete过程和put过程一样,只是在写的过程中添加相关的墓杯标记
increase操作在服务端主要有三个步骤:
1. 读取原来列的数据到内存中;
2. 修改读到内存中的数据;
3. 重新数据写到memStore和WAL中;
7 Region分裂和合并问题分析
7.1 Region分裂
7.2 Region合并
8 HBase主备集群数据同步分析
更进一步深入了解掌握HBase;
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。