hbase中列簇和列_为什么在 HBase 中不建议单表列簇超过 3 个

本文分析了HBase中列簇过多带来的性能问题,包括数据分散导致扫描性能下降和IO资源消耗增加。当不同列簇数据量差距悬殊时,持有数据量最少的列簇会因Region Split而影响性能。建议限制列簇数量以优化HBase存储与读取效率。
摘要由CSDN通过智能技术生成

首先,我们来看一张 HBase 的存储结构图(图片来源于网络),如下:

HBase 的数据存储节点叫做 HRegionServer,每个 HRegionServer 管理很多个 HRegion,Region 是HBase你们数据管理的最小单元,不同的 Region 存放在不同的 HRegionServer 机器上。

每个 HRegion 由一个 HLog 和 一个或者多个 Store 组成。每个 Store 由保存一个列簇 (columns family) 。 每个Strore又由一个memStore和 零个至多个StoreFile 组成。memStore 存储在内存中, StoreFile 存储在HDFS上。

说到这里,我们可以很明显的感知到,多个 Region 会造成性能问题,具体是什么性能问题,接着往下看……但我们在想一个问题,Region 少一点绕开性能问题行不行。笔者直接告诉你,也不行!为什么? Region 数目太少就会妨碍可扩展性,导致单个 Region 变得很大降低了并行度。

回到正题,我们在定义 HBase 表的时候,在没有配置“hbase.hregion.max.filesize”的情况下,默认单个 Region 的大小为:10 * 1024 * 1024 * 1024,但写入数据量超过该值,会造成 Region 的 split 动作。这个 RegionSplitPolicy 策略有如下几种方式:

ConstantSizeRegionSplitPolicy : 这个是版本为 0.94.0 的默认region split 策略。根据公式min(r^2*flushSize&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值