hbase个人总结

tech2023-07-08  118

文章目录

概述集群搭建HMaster列存储HRegionHRegionServerCompation机制布隆过滤器读/写补充

概述

分布式非关系型数据库 列存储 可以存储大数据量 数据最后是落盘到hadoop上,廉价,便于横向拓展 存储半结构化数据不浪费空间。

没有主键的概念,行键Rowkey代替主键 数据写入不是覆盖,而是记录一个新的VERSION,默认显示最新VERSION的数据 namespace下有default和hbase两个自带的属性空间,hbase不要动,表默认写入default中。


集群搭建

自己练习中,搭建完全分布式zookeeper, 启动一台hadoop伪分布式+hbase sh hbase

zookeeper充当注册中心的作用。HMaster通过zookeeper监控HRegionServer.


HMaster

负责管理HRegionServer, HRegion由哪个HRegionServer管理。 负责DDL操作(会产生元数据的操作, DML不产生元数据,不进过HMaster. 产生元数据的操作即使对表的操作,create drop disable)

HMaster实时监控zookeeper上/backup-master,判断Backup master是否改动。

先注册的hmaster会变成active, 其他变成backup.

sh hbase-daemon.sh start master 因为要实时监控,一般不超过3个


列存储

写入数据的时候,行存储数据是连续的,只要尾部追加,而列存储需要多少寻址。行比列快.

读取的时候。 整表读与写类似,行快。字段读的时候,列快。

实际生产中,字段读更多。


HRegion

HRegion超过10G,会分裂,变成2个G,分裂出去的HRegion会有新的HRegionServer管理。


HRegionServer

管理HRegion, 1个HS可以管理1000个。

WAL:写-日志 防止数据丢失 达到1G会滚动,产生新的WAL,旧的变成old WAL,一定时间后被清理blockCache - 数据块缓存 本质上是读缓存 局部性原理:时间局部性,空间局部性。 (LRU:移除最长时间没用的)memStore - 本质上是写缓存 设置memStore提高写的效率(因为在内存中) 冲刷条件: > 1.达到128M冲刷 > 2.WAL滚动时 > 3. (所有memStore占内存)/(总内存) = 35%, 会冲刷至小于35%HFile(storeFile) 落户到hadoop的block中

Compation机制

minjor compact:相邻的合并。小的合成一个大的,大的不参与合并。 major compact: 所有HFile全部合并成1个

布隆过滤器

HFile判断数据是否存在的方法

利用3个哈希函数对一个值映射。映射到0表示一定没有。

不能判断一定有!


读/写

查找HRegionServer的流程如下: 老版本中-ROOT-管理.meta,还多一步查找-ROOT-目前被废除。 -ROOT-被废除的原因(点击查看)

写: 请求写入WAL,再写入memstore

读: 先读blockCache,没有再读memStore, 再读HFile(storeFile), 先用行键筛选,再对剩余的文件用布隆过滤器筛选。


补充

删除表之前要先禁用表

disable 'person' drop 'person'

建表的时候设置最多获取的版本数据

create 'person', {NAME=>'basic', VERSIONS=>3}, {NAME=>'info', VERSIONS=>5} get 'person', 'p1', {COLUMN=>'basic:age', VERSIONS=>3}
最新回复(0)