网站找不到首页,长春财经学院占地面积,网站建设维护及使用管理办法,禹城网站定制12 HBase 文章目录 12 HBase12.1 HBase存储结构12.2 HBase的写流程12.3 HBase的读流程12.6 HBase的合并12.7 RowKey设计原则12.8 RowKey如何设计12.9 HBase二级索引原理 12.1 HBase存储结构 架构角色#xff1a; 1#xff09;Master 实现类为HMaster#xff0c;负责监控集群…12 HBase 文章目录 12 HBase12.1 HBase存储结构12.2 HBase的写流程12.3 HBase的读流程12.6 HBase的合并12.7 RowKey设计原则12.8 RowKey如何设计12.9 HBase二级索引原理 12.1 HBase存储结构 架构角色 1Master 实现类为HMaster负责监控集群中所有的 RegionServer 实例。主要作用如下 1管理元数据表格hbase:meta接收用户对表格创建修改删除的命令并执行 2监控region是否需要进行负载均衡故障转移和region的拆分。 通过启动多个后台线程监控实现上述功能 ①LoadBalancer负载均衡器 周期性监控region分布在regionServer上面是否均衡由参数hbase.balancer.period控制周期时间默认5分钟。 ②CatalogJanitor元数据管理器 定期检查和清理HBasemeta中的数据。meta表内容在进阶中介绍。 ③MasterProcWAL Master预写日志处理器 把Master需要执行的任务记录到预写日志WAL中如果Master宕机让backupMaster读取日志继续干。 2Region Server Region Server实现类为HRegionServer主要作用如下: 1负责数据cell的处理例如写入数据put查询数据get等 2拆分合并Region的实际执行者有Master监控有regionServer执行。 3Zookeeper HBase通过Zookeeper来做Master的高可用、记录RegionServer的部署信息、并且存储有meta表的位置信息。 HBase对于数据的读写操作时直接访问Zookeeper的在2.3版本推出Master Registry模式客户端可以直接访问Master。使用此功能会加大对Master的压力减轻对Zookeeper的压力。 4HDFS HDFS为HBase提供最终的底层数据存储服务同时为HBase提供高容错的支持。
12.2 HBase的写流程 写流程 写流程顺序正如API编写顺序首先创建HBase的重量级连接 1读取本地缓存中的Meta表信息第一次启动客户端为空 2向ZK发起读取Meta表所在位置的请求 3ZK正常返回Meta表所在位置 4向Meta表所在位置的RegionServer发起请求读取Meta表信息 5读取到Meta表信息并将其缓存在本地 6向待写入表发起写数据请求 7先写WAL再写MemStore,并向客户端返回写入数据成功。
12.3 HBase的读流程 创建连接同写流程。 1读取本地缓存中的Meta表信息第一次启动客户端为空 2向ZK发起读取Meta表所在位置的请求 3ZK正常返回Meta表所在位置 4向Meta表所在位置的RegionServer发起请求读取Meta表信息 5读取到Meta表信息并将其缓存在本地 6MemStore、StoreFile、BlockCache 同时构建MemStore与StoreFile的扫描器 MemStore正常读 StoreFile 根据索引确定待读取文件 再根据BlockCache确定读取文件 7合并多个位置读取到的数据,给用户返回最大版本的数据如果最大版本数据为删除标记则不给不返回任何数据。
12.6 HBase的合并
Compaction分为两种分别是Minor Compaction和Major Compaction。
12.7 RowKey设计原则
1rowkey长度原则 2rowkey散列原则 3rowkey唯一原则
12.8 RowKey如何设计
1使用场景: 大量用户信息保存在HBase中。 2热点问题 由于用户的id是连续的批量导入用户数据后很有可能用户信息都集中在同一个region中。如果用户信息频繁访问很有可能该region的节点成为热点。 3期望 通过对Rowkey的设计使用户数据能够分散到多个region中。 4步骤 1预分区 通过命令
create GMALL:DIM_USER_INFO,INFO,SPLITS[20,40,60,80]把用户信息表(GMALL:DIM_USER_INFO) 分为5个region : [00-20), [20-40), [40-60), [60-80), [80-99] 2写入时反转ID 把用户ID左补零10位根据最大用户数然后反转顺序。 比如用户id为1457反转处理后变为7541000000; 根据前两位分到region [60-80), 用户id为1459反转处理后变为9541000000根据前两位分到 region [80-99] 这样连续的用户ID反转后由于Rowkey开头并不连续会进入不同的region中。 最终达到的效果可以通过Web UI进行观察 如上图用户数据会分散到多个分区中。 注意在用户查询时也同样根据需要把ID进行反转后进行查询。
12.9 HBase二级索引原理
1原理 协处理器协助处理数据可以在向原始表中写入数据之后向索引表中写入一条索引数据。 2种类及用法 1全局 读多写少 单独创建表专门用于存储索引索引表数据量比原始表小读取更快速。但是写操作会写两张表的数据跨Region需要多个连接。 2本地 写多读少 将索引数据与原表放在一起Region加在一起比原表数据量大读取相对变慢但是由于在一个Region所以写操作两条数据用的是同一个连接。