全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

HBase系列常见面试题汇总---怎样合理设置HBase RowKey

发布时间:2022-08-12 10:46:10
发布人:syq

  Rowkey 长度

  Rowkey 是一个二进制码流,建议越短越好,一般不超过 16 个字节,主要是出于以下的考虑:

  数据的持久化文件 HFile 中是按照 KeyValue 存储的,即你写入的数据可能是一个 RowKey 对应多个列族,多个列,但是实际的存储是每个列都会对应 Rowkey 写一遍,即这一条数据有多少个列,就会存储多少遍 Rowkey,这会极大影响 HFile 的存储效率

怎样合理设置HBase RowKey

  MemStore 和 BlockCache 都会将缓存部分数据到内存,如果 Rowkey 字段过长内存的有效利用率会降低,系统将无法缓存更多的数据,这会降低检索效率。

  目前操作系统一般都是 64 位系统,内存 8 字节对齐。控制在 16 个字节,8 字节的整数倍,利用操作系统的最佳特性。

  Rowkey 散列设计

  HBase 的 Rowkey 是按照字典序排列的,而数据分布在 RegionServer 上的方式是做高位哈希,所以如果我们的 Rowkey 首位存在大量重复的值那么很可能会出现数据倾斜问题,关于数据倾斜的问题下面会详细说明,总之,原则上就是Rowkey 的首位尽量为散列。

  常访问的数据放到一起

  对于需要批量获取的数据,比如某一天的数据,可以把一整天的数据存储在一起,即把 rowkey 的高位设计为时间戳,这样在读数据的时候就可以指定 Start RowKey 和 End RowKey 做一个 scan 操作,因为高位相同的 Rowkey 会存储在一起,所以这样读是一个顺序读的过程,会比较高效。但是这样有一个很明显的问题,违背了上一条Rowkey 散列设计原则,很可能会出现数据倾斜问题。所以说没有最好的设计,具体如何权衡就得看实际业务场景了

  更多关于大数据培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。

相关文章

明道、teambition、Tower.im、Worktile、trello的功能都有哪些?

明道、teambition、Tower.im、Worktile、trello的功能都有哪些?

2023-10-14
反欺诈中所用到的机器学习模型有哪些?

反欺诈中所用到的机器学习模型有哪些?

2023-10-14
强化学习中on-policy与off-policy有什么区别?

强化学习中on-policy与off-policy有什么区别?

2023-10-14
为什么交叉熵可以用于计算代价?

为什么交叉熵可以用于计算代价?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取