一. 离线 Clustering
异步的 clustering 相对于 online 的 async clustering 资源隔离, 从未更加稳定。
1.1 设置参数
-
clustering.async.enabled
为 false,关闭在线 clustering。 -
clustering.scheduler.enabled
仍然保持开启,由写任务阶段性出发 clustering plan。
1.2 原理
一个 clustering 的任务的执行包括两部分:
-
schedule plan
推荐由写定时出发,写参数clustering.schedule.enabled
默认开启。 -
执行对应的plan
1.3 使用方式
1.3.1 执行命令
离线 clustering 需要 手动执行 Java 程序, 程序入口:
hudi-flink1.14-bundle-0.12.0.jar
org.apache.hudi.sink.clustering.HoodieFlinkClusteringJob
// 命令行的方式
./bin/flink run -c org.apache.hudi.sink.clustering.HoodieFlinkClusteringJob lib/hudi-flink1.14-bundle-0.12.0.jar --path hdfs://xxx:8020/table
1.3.2 参数配置
参数名 | required | 默认值 | 备注 |
---|---|---|---|
--path | true | -- | 目标表的路径。 |
--clustering-tasks | false | -1 | Clustering task 的并发,默认是待压缩 file group 的数量 |
--schedule | false | false | 是否要 执行 schedule clustering plan 的操作,当写流程还在持续写入表数据的时候,开启这个参数有丢失查询数据的风险,所以开启该参数一定要保证当前没有任务往表里写数据,写任务的 clustering plan 默认是一直 schedule 的,除非手动关闭(默认 4个 commits 一次 clustering) |
--seq | false | LIFO | 执行压缩任务的顺序,默认是从最新的压缩plan 开始执行,可选值: LIFO:从最新的plan开始执行; FIFO: 从最老的plan开始执行 |
--target-file-max-bytes | false | 1024 * 1024 * 1024 | 最大目标文件,默认1GB |
--small-file-limit | false | 600 | 小于该大小的文件会参与clustering,默认600MB |
--sort-columns | false | N/A | Clustering 可选排序列 |
--service | false | false | 是否开启 service 模式,service模式会打开常驻进程,一直监听压缩并提交到 集群执行(从0.11 开始执行) |
--min-compaction-interval-seconds | false | 600 (单位 秒) | service 模式下的执行间隔,默认10分钟 |
网友评论