Apache Hudi 异步Compaction部署方式汇总

简介: Apache Hudi 异步Compaction部署方式汇总

本篇文章对执行异步Compaction的不同部署模型全面汇总。

1. Compaction

对于Merge-On-Read表,数据使用列式Parquet文件和行式Avro文件存储,更新被记录到增量文件,然后进行同步/异步compaction生成新版本的列式文件。Merge-On-Read表可减少数据摄入延迟,因而进行不阻塞摄入的异步Compaction很有意义。

2. 异步Compaction

异步Compaction会进行如下两个步骤

  • 调度Compaction:由摄取作业完成,在这一步,Hudi扫描分区并选出待进行compaction的FileSlice,最后CompactionPlan会写入Hudi的Timeline。
  • 执行Compaction:一个单独的进程/线程将读取CompactionPlan并对FileSlice执行Compaction操作。

3. 部署模型

几种执行异步Compaction的方法如下

3.1 Spark Structured Streaming

在0.6.0版本,Hudi支持在Spark Structured Streming作业中支持异步Compaction,Compactions在streaming作业内被异步调度和执行,Spark Structured作业在Merge-On-Read表中会默认开启异步Compaction。

Java代码示例如下


import org.apache.hudi.DataSourceWriteOptions;import org.apache.hudi.HoodieDataSourceHelpers;import org.apache.hudi.config.HoodieCompactionConfig;import org.apache.hudi.config.HoodieWriteConfig;
import org.apache.spark.sql.streaming.OutputMode;import org.apache.spark.sql.streaming.ProcessingTime;
 DataStreamWriter<Row> writer = streamingInput.writeStream().format("org.apache.hudi")        .option(DataSourceWriteOptions.OPERATION_OPT_KEY(), operationType)        .option(DataSourceWriteOptions.TABLE_TYPE_OPT_KEY(), tableType)        .option(DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY(), "_row_key")        .option(DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY(), "partition")        .option(DataSourceWriteOptions.PRECOMBINE_FIELD_OPT_KEY(), "timestamp")        .option(HoodieCompactionConfig.INLINE_COMPACT_NUM_DELTA_COMMITS_PROP, "10")        .option(DataSourceWriteOptions.ASYNC_COMPACT_ENABLE_OPT_KEY(), "true")        .option(HoodieWriteConfig.TABLE_NAME, tableName)        .option("checkpointLocation", checkpointLocation)        .outputMode(OutputMode.Append()); writer.trigger(new ProcessingTime(30000)).start(tablePath);

3.2 DeltaStreamer Continuous模式

Hudi DeltaStreamer提供连续摄入模式,Spark作业可以持续从上游消费数据写入Hudi,在该模式下,Hudi也支持异步Compaction,下面是在连续模式下进行异步Compaction示例


spark-submit --packages org.apache.hudi:hudi-utilities-bundle_2.11:0.6.0 \--class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer \--table-type MERGE_ON_READ \--target-base-path <hudi_base_path> \--target-table <hudi_table> \--source-class org.apache.hudi.utilities.sources.JsonDFSSource \--source-ordering-field ts \--schemaprovider-class org.apache.hudi.utilities.schema.FilebasedSchemaProvider \--props /path/to/source.properties \--continous

3.3 Hudi CLI

Hudi CLI 是另一种异步执行指定Compaction的方式,示例如下


hudi:trips->compaction run --tableName <table_name> --parallelism <parallelism> --compactionInstant <InstantTime>...

3.4 Hudi Compactor脚本

Hudi还提供了独立工具来异步执行指定Compaction,示例如下


spark-submit --packages org.apache.hudi:hudi-utilities-bundle_2.11:0.6.0 \--class org.apache.hudi.utilities.HoodieCompactor \--base-path <base_path> \--table-name <table_name> \--instant-time <compaction_instant> \--schema-file <schema_file>

4. 总结

Hudi提供了不同的Compaction方式,可根据不同应用场景部署不同Compaction方式。

目录
相关文章
|
5天前
|
存储 Apache
Apache Hudi Savepoint实现分析
Apache Hudi Savepoint实现分析
42 0
|
5天前
|
安全 Linux 网络安全
Linux _ apache服务器部署 不同域名—访问不同网站(多网站)
Linux _ apache服务器部署 不同域名—访问不同网站(多网站)
|
5天前
|
网络安全 API Apache
如何在win系统部署Apache服务并实现无公网ip远程访问
如何在win系统部署Apache服务并实现无公网ip远程访问
|
5天前
|
网络安全 API Apache
本地快速部署Apache服务器并使用内网穿透实现远程访问
本地快速部署Apache服务器并使用内网穿透实现远程访问
|
5天前
|
数据可视化 Linux Apache
CentOS部署Apache Superset大数据可视化BI分析工具并实现无公网IP远程访问
CentOS部署Apache Superset大数据可视化BI分析工具并实现无公网IP远程访问
|
5天前
|
存储 SQL 分布式计算
使用Amazon EMR和Apache Hudi在S3上插入,更新,删除数据
使用Amazon EMR和Apache Hudi在S3上插入,更新,删除数据
150 0
|
5天前
|
存储 分布式计算 Hadoop
一文了解Apache Hudi架构、工具和最佳实践
一文了解Apache Hudi架构、工具和最佳实践
155 0
|
5天前
|
SQL 分布式计算 NoSQL
使用Apache Hudi和Debezium构建健壮的CDC管道
使用Apache Hudi和Debezium构建健壮的CDC管道
22 0
|
2天前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之遇到报错:Apache Kafka Connect错误如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
13 5
|
2天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之报错:org.apache.flink.table.api.validationexception如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
9 1

热门文章

最新文章

推荐镜像

更多
http://www.vxiaotou.com