如何解决HBase 批量加载生成太多存储文件
我们正在 EMR 上探索 HBase(带有 S3 存储后端)。考虑到我们的表的最终大小(数十/数百 TB),我一直在小样本数据上测试批量加载实用程序。
问题
批量加载器创建了过多的存储文件。 regionserver 上的写入请求和存储文件大小不断增加。对于 32Hfiles ~ 7.9GB 的输入数据,我最终得到了 >60 个写入请求,>1000 个存储文件,约 400GB。
一些注意事项:
- 目标表是空的,没有预拆分。因此,所有数据都被加载到单个区域服务器/区域中,但考虑到输入数据的大小,我认为这不会成为问题吗?
- hbase.hregion.max.filesize 默认为 1GB
- hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily 32 岁
集群设置
EMR 集群 16 个 r5.xlarge 实例,为 S3 配置了 hbase 存储
当前进程
- 输入数据约为 6000 万行
- 目标表是空的,没有预拆分。鉴于输入数据的大小,我认为这是可以的。
- 在 Spark 中准备 HFiles(唯一的行键、范围分区和正确排序)
- HFiles 暂存于 S3 (32 HFiles ~ 7.9GB)
- 在 EMR Hbase 集群上运行批量加载工具
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles <S3_HFILE_PATH> <TABLE_NAME>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。