hbase的体系结构 client: 提供了访问hbase的各种接口 维护了一个缓存,缓存最近的访问记录,用来加快访问hbase zookeeper: 监控hMaster,保证有一个活跃的节点来管理整个集群 实时监控HregionServer的状态,并将其通知给HMaster 存储hbase的元数据信息,比如meta,meta-region-server表 HMaster 负责对region的切分,分配 负责regionServer的负载均衡 负责客户端的schema请求 负责hdfs上的垃圾回收 HRegionServer 负责本机region的管理 真正负责客户端的读写请求 负责与hdfs上进行交互 Hlog 记录下客户端的所有请求,防止机器宕机,可以进行回滚 *** 作 格式是WAL格式 region region是hbase的最小存储单元,可以是一张表,也可以是一张表的一部分 region的名字是由rowkey的行范围来进行标识的 store region又被划分为很多的store,store对应的是一个列族,也是hdfs下的一个目录,所以不同列族下的数据在不同的文件目录下面 里面维护了一个memStore memStore 写入数据真正进行 *** 作的地方,数据写入后会进行对rowkey的排序,通过rowkey的(长度,时间)等进行排序 memestre有一个阈值,阈值是内存的40% 或者一小时 或者128M StoreFile 当mem达到阈值,就会flush成一个storefile,所以storefile有很多个,当达到一定的数量阈值之后,就会对storefile进行合并 *** 作,去掉过多的版本号,以及标记要删除的值 storefile也有一个阈值为10G,当达到阈值10G,就会造成storefile的切分,storefile的切分也会造成region的切分,将一个region切分成两个新的region,一个旧的region下线,两个新的region上线
hbase的存储机制: 1.region是hbase的最小的存储单位,region是一张表,也可以是一张表的一部分,region的名字是由rowkey的行范围来进行划分的 2.region里面维护了很多的store,store对应一个列族,也对应hdfs上的一个存储的目录,store里面维护了一个memstore 3.memstore是真正对数据进行 *** 作的地方,memstore会对写入的数据进行rowkey的排序,根据rowkey(长度,版本戳)等进行拍序,memestore有一个阈值是128M或者内存的40%或者一小时 4.当memestore达到阈值,就会将数据flush成一个个storefile,所以storefile就会有多个,当达到一定的数量的阈值,就会进行store file的合并 *** 作,过滤掉版本号过多的单元格,以及标记删除的单元格,当达到阈值10G就会造成storefile的切分,storefile的切分会引起region的切分,将一个旧的region切分成两个新的region,一个旧的region下线,两个新的region上线 5.最后flush成hfile保存在hdfs上
hbase的写流程 1.client通过zookeeper的调度,想hmaster发出请求,请求在region写入数据 2.数据被写入到region中的memstore中知道memestore达到阈值128M或者1小时或者内存的40% 3.memestore达到阈值flush成storefile,所以storefile有多个,当达到一定的数量阈值就会进行合并 *** 作,将过多的版本号,以及标记要删除的rowkey过滤掉 4.storefile会随着时间越来越大,当到达阈值10G,就会造成storefile的切分,storefile的切分就会引起region的切分,一个旧的region切分成两个新的region,旧的region下线,两个新的region上线 5.最后形成hfile持久化存储在hdfs上面
布隆过滤器: 原理:布隆过滤器是一个由64kb的初始权威0的位数组和n个hash函数组成的,每存入一个值就会对这个值进行n的hash函数的运算,运算之后得到n个下标,将这些得到的下标值全都赋值为1 用处:当要检查一个值是否在这个region中的时候,我们就可以通过n个hash函数的计算,得到n个下标,在数组中进行判断,如果这n个下标中有一个是0,这个值一定不在这个region中,如果这n个下标都是1,这个值也不一定在这个region中
rowkey的设计原则: 1.唯一性原则(避免出翔覆盖) 2.长度一致原则(避免出现排序异常) 3.散列原则(避免热点key问题) 将设计的rowkey进行反转 4.加盐方式(在rowkey前面加随机字符串)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)