Apache Hudi数据湖的Flink优化参数

1. 表参数

1.1 Memory

参数名称描述默认值备注
write.task.max.size每个write task使用的最大内存,超过则对数据进行flush1024MBwrite buffer使用的内存 = write.task.max.size - compaction.max_memory,当write buffer总共使用的内存超过限制,则将最大的buffer进行flush
write.batch.size数据写入batch的大小64MB推荐使用默认配置
write.log_block.sizeHudi的log writer将数据进行缓存,等达到该参数限制,才将数据flush到disk形成LogBlock128MB推荐使用默认配置
write.merge.max_memoryCOW类型的表,进行incremental data和data file能使用的最大heap size100MB推荐使用默认配置
compaction.max_memory每个write task进行compaction能使用的最大heap size100MB如果是online compaction,且资源充足,可以调大该值,如1024MB

1.2 Parallelism

参数名称描述默认值备注
write.taskswrite task的并行度,每一个write task写入1~N个顺序buckets4增加该值,对小文件的数据没有影响
write.bucket_assign.tasksbucket assigner operators的并行度Flink的parallelism.default参数增加该值,会增加bucket的数量,所以也会增加小文件的数量
write.index_boostrap.tasksindex bootstrap的并行度Flink的parallelism.default参数
read.tasksread operators的并行度4
compaction.tasksonline compaction的并行度4推荐使用offline compaction

1.3 Compaction

只适用于online compaction

参数名称描述默认值备注
compaction.schedule.enabled是否定期生成compaction plantrue即使compaction.async.enabled = false,也推荐开启该值
compaction.async.enabledMOR类型表默认开启Async Compactiontruefalse表示关闭online compaction
compaction.trigger.strategy触发compaction的Strategynum_commits可选参数值:1. num_commits:delta commits数量达到多少;2. time_elapsed:上次compaction过后多少秒;3. num_and_time:同时满足num_commits和time_elapsed;4. num_or_time:满足num_commits或time_elapsed
compaction.delta_commits5
compaction.delta_seconds3600
compaction.target_io每个compaction读写合计的目标IO,默认500GB512000

版权声明:本文为yy8623977原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。