[lake/hudi][docs] Add Hudi tiering service documentation#3549
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a dedicated, user-facing Apache Hudi integration guide to the Fluss website and updates existing configuration/option descriptions to include Hudi as a supported lakehouse (datalake) format.
Changes:
- Added a comprehensive Hudi Tiering Service guide (dependencies, configuration, tiering job startup, table mapping, reads, and limitations).
- Updated tiered storage and lakehouse docs to list Hudi among supported formats.
- Updated configuration/option descriptions (website +
ConfigOptions) to reflect Hudi support.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| website/docs/streaming-lakehouse/integrate-data-lakes/formats/hudi.md | New end-to-end documentation for configuring and using Hudi as Fluss lakehouse storage. |
| website/docs/maintenance/tiered-storage/overview.md | Updates supported lakehouse formats list to include Hudi. |
| website/docs/maintenance/tiered-storage/lakehouse-storage.md | Updates lakehouse storage description to include Hudi as supported. |
| website/docs/maintenance/configuration.md | Updates datalake.format documentation to include Hudi. |
| website/docs/engine-flink/options.md | Updates table.datalake.format documentation to include hudi. |
| fluss-common/src/main/java/org/apache/fluss/config/ConfigOptions.java | Updates option descriptions to include hudi in supported datalake formats. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@fhan688 Could you please rebase main branch since we already reorganize doc for lake integration |
0d0b790 to
b9d6272
Compare
|
please help review, thanks! @XuQianJin-Stars |
| "The data lake format of the table specifies the tiered Lakehouse storage format. Currently, supported formats are `paimon`, `iceberg`, and `lance`. " | ||
| + "In the future, more kinds of data lake format will be supported, such as DeltaLake or Hudi. " | ||
| "The data lake format of the table specifies the tiered Lakehouse storage format. Currently, supported formats are `paimon`, `iceberg`, `hudi`, and `lance`. " | ||
| + "In the future, more kinds of data lake format will be supported, such as DeltaLake. " |
There was a problem hiding this comment.
"more kinds of data lake format will be supported". Since "kinds" is plural, "format" should be "formats":
... more kinds of data lake format will be supported ...
^^^^^^^ -> formats
| Fluss supports the Hudi catalog modes implemented by the connector: | ||
|
|
||
| - `dfs`: Hudi DFS catalog. Tables are stored under `${catalog.path}/${database_name}/${table_name}`. | ||
| - `hms`: Hudi Hive Metastore catalog. Configure Hive Metastore access through Hudi/Hadoop options, for example `hive.conf.dir` or `hive.metastore.uris`. |
There was a problem hiding this comment.
Hive Metastore prose vs example key form (under "Fluss supports the Hudi catalog modes implemented by the connector:", the hms bullet) The prose reads:
Configure Hive Metastore access through Hudi/Hadoop options, for example hive.conf.dir or hive.metastore.uris.
while the example directly above uses the prefixed key datalake.hudi.hive.metastore.uris. A reader may be confused about which literal key to put in server.yaml. Suggest aligning the prose to the prefixed form actually used in the example:
Configure Hive Metastore access through Hudi/Hadoop options, for example datalake.hudi.hive.conf.dir or datalake.hudi.hive.metastore.uris.
|
|
||
| Conceptually, Fluss creates a Hudi table with properties equivalent to: | ||
|
|
||
| ```sql title="Hudi table properties" |
There was a problem hiding this comment.
cluster/server options use datalake.hudi.* (stripped by Fluss before passing to the catalog), while table-level Fluss options use hudi.* (stripped before passing to Hudi). This distinction is implicit and easy to miss. A one-line note such as "Cluster options use the datalake.hudi. prefix; table-level Hudi options use the hudi. prefix — both are stripped before being forwarded" would prevent misconfiguration. Minor, but worth it given Hudi has many options.
|
|
||
| | Scenario | Required JAR | | ||
| |----------|--------------| | ||
| | Hudi lake connector | [fluss-lake-hudi-$FLUSS_VERSION$.jar](https://repo1.maven.org/maven2/org/apache/fluss/fluss-lake-hudi/$FLUSS_VERSION$/fluss-lake-hudi-$FLUSS_VERSION$.jar) | |
There was a problem hiding this comment.
URL base style The Hudi connector JAR link uses a hard-coded https://repo1.maven.org/maven2/.../fluss-lake-hudi/$FLUSS_VERSION$/..., which is consistent with the sibling Paimon/Iceberg/Lance rows in the same file (lines ~149, ~158, ~167). No change needed; just noting it is internally consistent. (hudi.md itself uses the
luoyuxia
left a comment
There was a problem hiding this comment.
Left two inline comments on the server-side Hudi plugin dependencies and the Hive Metastore URI configuration examples.
| Put the following JARs into `${FLUSS_HOME}/plugins/hudi/` before starting the Fluss servers: | ||
|
|
||
| - [fluss-lake-hudi-$FLUSS_VERSION$.jar]($FLUSS_MAVEN_REPO_URL$/org/apache/fluss/fluss-lake-hudi/$FLUSS_VERSION$/fluss-lake-hudi-$FLUSS_VERSION$.jar) | ||
| - The Hudi Flink bundle matching your runtime. For Flink 1.20, use [hudi-flink1.20-bundle-1.1.0.jar](https://repo.maven.apache.org/maven2/org/apache/hudi/hudi-flink1.20-bundle/1.1.0/hudi-flink1.20-bundle-1.1.0.jar). |
There was a problem hiding this comment.
Could we also include the Flink core and Table API/runtime JARs required by the server-side plugin? fluss-lake-hudi directly imports classes such as org.apache.flink.configuration.Configuration, org.apache.flink.table.catalog.Catalog, and DataTypes, while its flink-core, flink-table-common, flink-table-api-java, and flink-table-runtime dependencies are declared as provided. hudi-flink1.20-bundle-1.1.0.jar does not contain these classes because it assumes an existing Flink runtime.
There was a problem hiding this comment.
From my codex, but the concern make sense to.
| datalake.format: hudi | ||
| datalake.hudi.mode: hms | ||
| datalake.hudi.catalog.path: hdfs:///warehouse/hudi | ||
| datalake.hudi.hive.metastore.uris: thrift://<hive-metastore-host>:9083 |
There was a problem hiding this comment.
This option will not reach HiveConf in Hudi 1.1.0. Fluss first strips datalake.hudi., producing hive.metastore.uris; HadoopConfigurations.getHadoopConf then copies only options prefixed with hadoop. and strips that prefix. Consequently METASTOREURIS remains empty and HoodieHiveCatalog rejects the embedded metastore. Please use datalake.hudi.hadoop.hive.metastore.uris here and in the tiering/deployment examples. The native Hudi catalog example should use hadoop.hive.metastore.uris. Alternatively, hive.conf.dir can point to a directory containing hive-site.xml.
There was a problem hiding this comment.
From my codex, but not sure about it.
|
@fhan688 Could you please help rebase main branch again? |
1 similar comment
|
@fhan688 Could you please help rebase main branch again? |
d78fa18 to
3e47148
Compare
Purpose
Linked issue: #3514
This PR adds user-facing documentation for using Fluss Tiering Service with Apache Hudi.
The Hudi lake integration has already been implemented in the
fluss-lake-hudimodule, but the website didnot yet provide a dedicated guide that explains how to configure Hudi as lakehouse storage, start the tiering
service, create Hudi-backed Fluss tables, and read tiered data.
Brief change log
streaming-lakehouse/integrate-data-lakes/formats.and Flink tiering service startup.
with the code.
mapping, auto compaction, commit metadata, and current limitations.
Tests
git diff --checkmvn -q -pl fluss-common -am -DskipTests -DskipITs -Dcheckstyle.skip=true compileWebsite build was not run locally because
website/node_modulesis not installed in the current workspace.API and Format
No API or storage format changes.
This PR only adds documentation and updates option descriptions to reflect that Hudi is now a supported
lakehouse format.
Documentation
This PR introduces the Hudi Tiering Service integration guide and updates existing lakehouse storage
documentation to include Hudi.