MAPREDUCE服务 MRS-Hudi表索引设计规范:建议
建议
- 基于Flink的流式写入的表,在数据量超过2亿条记录,采用Bucket索引,2亿以内可以采用Flink状态索引。
参照Flink状态索引的特点,Hudi表超过一定数据量后,Flink作业状态后端压力很大,需要优化状态后端参数才能维持性能;同时由于Flink冷启动的时候需要遍历全表数据,大数据量也会导致Flink作业启动缓慢。因此基于简化使用的角度,针对大数据量的表,可以通过采用Bucket索引来避免状态后端的复杂调优。
如果Bucket索引+分区表的模式无法平衡Bueckt桶过大的问题,还是可以继续采用Flink状态索引,按照规范去优化对应的配置参数即可。
- 基于Bucket索引的表,按照单个Bucket 2GB数据量进行设计。
为了规避单个Bucket过大,建议单个Bucket的数据量不要超过2GB(该2GB是指数据内容大小,不是指数据行数也不是parquet的数据文件大小),目的是将对应的桶的Parquet文件大小控制在256MB范围内(平衡读写内存消耗和HDFS存储有效利用),因此可以看出2GB的这个限制只是一个经验值,因为不同的业务数据经过列存压缩后大小是不一样的。
为什么建议是2GB?
- 2GB的数据存储成列存Parquet文件后,大概的数据文件大小是150MB ~ 256MB左右。不同业务数据会有出入。而HDFS单个数据块一般会是128MB,这样可以有效的利用存储空间。
- 数据读写占用的内存空间都是原始数据大小(包括空值也是会占用内存的),2GB在大数据计算过程中,处于单task读写可接受范围之内。
如果是单个Bucket的数据量超过了该值范围,可能会有什么影响?
- 读写任务可能会出现OOM的问题,解决方法就是提升单个task的内存占比。
- 读写性能下降,因为单个task的处理的数据量变大,导致处理耗时变大。
- GaussDB如何建主键_数据库索引设计规范_高斯数据库如何建主键-华为云
- GaussDB索引_GaussDB数据库索引_高斯数据库索引_华为云
- 云数据库Gaussdb数据库索引_华为gaussdb__gaussdb 数据库
- GaussDB索引_华为数据库GaussDB_高斯数据库索引_华为云
- MapReduce服务_什么是MapReduce服务_什么是HBase
- 什么是Spark_如何使用Spark_Spark的功能是什么
- Hudi服务_什么是Hudi_如何使用Hudi
- GaussDB原理_GaussDB数据库原理_高斯数据库原理-华为云
- MapReduce工作原理_MapReduce是什么意思_MapReduce流程_MRS_华为云
- GaussDB数据库搭建_GaussDB怎么样_高斯数据库搭建