Skip to content

NoClassDefFoundError: org/apache/hadoop/hdfs/HdfsConfiguration when using Paimon Lakehouse #1314

@wuchong

Description

@wuchong

Search before asking

  • I searched in the issues and found nothing similar.

Fluss version

0.7.0 (latest release)

Please describe the bug 🐞

Problem1

This is reported in https://apache-fluss.slack.com/archives/C08QXHUH3M1/p1752314994560869 by George Leonard (see more detailed information and files in the slack thread).

I copied the important configuration to here. The NoClassDefFoundError of HdfsConfiguration can be reproduced by following steps:

  1. Configure datalake.format paimon with filesystem metastore and a local warehouse path on each Fluss server
  2. Download fluss-fs-hadoop-0.7.0.jar, fluss-fs-s3-0.7.0.jar, fluss-lake-paimon-0.7.0.jar into <FLUSS_HOME>/lib
  3. Start all the Fluss servers and Coordinator reports the error.

If remove step 2, all the things work. If adding flink-shaded-hadoop-2-uber-2.8.3-10.0.jar into fluss/lib, it also works.

          zookeeper.address: zookeeper:2181
          coordinator.host: coordinator-server
          remote.data.dir: hdfs://namenode:9000/fluss
          datalake.format: paimon
          datalake.paimon.metastore: filesystem
          datalake.paimon.warehouse: /tmp/paimon
coordinator-server  | 2025-07-12 10:00:26,777 ERROR com.alibaba.fluss.server.ServerBase                          [] - Could not start the CoordinatorServer.
coordinator-server  | java.lang.NoClassDefFoundError: org/apache/hadoop/hdfs/HdfsConfiguration
coordinator-server  | 	at org.apache.paimon.catalog.CatalogContext.<init>(CatalogContext.java:53) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at org.apache.paimon.catalog.CatalogContext.create(CatalogContext.java:65) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.lake.paimon.PaimonLakeCatalog.<init>(PaimonLakeCatalog.java:71) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.lake.paimon.PaimonLakeStorage.createLakeCatalog(PaimonLakeStorage.java:42) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.lake.paimon.PaimonLakeStorage.createLakeCatalog(PaimonLakeStorage.java:27) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.coordinator.CoordinatorServer.createLakeCatalog(CoordinatorServer.java:258) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.coordinator.CoordinatorServer.startServices(CoordinatorServer.java:195) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.start(ServerBase.java:118) [fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.startServer(ServerBase.java:88) [fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.coordinator.CoordinatorServer.main(CoordinatorServer.java:154) [fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hdfs.HdfsConfiguration
coordinator-server  | 	at jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) ~[?:?]
coordinator-server  | 	at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) ~[?:?]
coordinator-server  | 	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
coordinator-server  | 	... 10 more
coordinator-server  | 2025-07-12 10:00:26,789 ERROR com.alibaba.fluss.server.ServerBase                          [] - Could not start CoordinatorServer.
coordinator-server  | com.alibaba.fluss.exception.FlussException: Failed to start the CoordinatorServer.
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.start(ServerBase.java:131) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.startServer(ServerBase.java:88) [fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.coordinator.CoordinatorServer.main(CoordinatorServer.java:154) [fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/hdfs/HdfsConfiguration
coordinator-server  | 	at org.apache.paimon.catalog.CatalogContext.<init>(CatalogContext.java:53) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at org.apache.paimon.catalog.CatalogContext.create(CatalogContext.java:65) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.lake.paimon.PaimonLakeCatalog.<init>(PaimonLakeCatalog.java:71) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.lake.paimon.PaimonLakeStorage.createLakeCatalog(PaimonLakeStorage.java:42) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.lake.paimon.PaimonLakeStorage.createLakeCatalog(PaimonLakeStorage.java:27) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.coordinator.CoordinatorServer.createLakeCatalog(CoordinatorServer.java:258) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.coordinator.CoordinatorServer.startServices(CoordinatorServer.java:195) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.start(ServerBase.java:118) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	... 2 more
coordinator-server  | Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hdfs.HdfsConfiguration
coordinator-server  | 	at jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) ~[?:?]
coordinator-server  | 	at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) ~[?:?]
coordinator-server  | 	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
coordinator-server  | 	at org.apache.paimon.catalog.CatalogContext.<init>(CatalogContext.java:53) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at org.apache.paimon.catalog.CatalogContext.create(CatalogContext.java:65) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.lake.paimon.PaimonLakeCatalog.<init>(PaimonLakeCatalog.java:71) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.lake.paimon.PaimonLakeStorage.createLakeCatalog(PaimonLakeStorage.java:42) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.lake.paimon.PaimonLakeStorage.createLakeCatalog(PaimonLakeStorage.java:27) ~[fluss-lake-paimon-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.coordinator.CoordinatorServer.createLakeCatalog(CoordinatorServer.java:258) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.coordinator.CoordinatorServer.startServices(CoordinatorServer.java:195) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.start(ServerBase.java:118) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	... 2 more

Problem2

Reverting to fluss/fluss:0.7.0 with a dockerfile tha references lakehouse storage tiering/paimon/hdfs with the same configuration,

          zookeeper.address: zookeeper:2181
          coordinator.host: coordinator-server
          remote.data.dir: hdfs://namenode:9000/fluss
          datalake.format: paimon
          datalake.paimon.metastore: filesystem
          datalake.paimon.warehouse: /tmp/paimon

it throws the exception during initialize fluss HDFS fs.

 | 2025-07-12 13:25:56,802 ERROR com.alibaba.fluss.server.ServerBase                          [] - Could not start CoordinatorServer.
coordinator-server  | com.alibaba.fluss.exception.FlussException: Failed to start the CoordinatorServer.
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.start(ServerBase.java:131) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.startServer(ServerBase.java:88) [fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.coordinator.CoordinatorServer.main(CoordinatorServer.java:154) [fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | Caused by: com.alibaba.fluss.fs.UnsupportedFileSystemSchemeException: Cannot support file system for 'hdfs' via Hadoop, because Hadoop is not in the classpath, or some classes are missing from the classpath.
coordinator-server  | 	at com.alibaba.fluss.fs.hdfs.HadoopFsPlugin.create(HadoopFsPlugin.java:160) ~[?:?]
coordinator-server  | 	at com.alibaba.fluss.fs.PluginFileSystemWrapper.create(PluginFileSystemWrapper.java:58) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FileSystem.lambda$getUnguardedFileSystem$3(FileSystem.java:400) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.utils.concurrent.LockUtils.inLock(LockUtils.java:41) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FileSystem.getUnguardedFileSystem(FileSystem.java:305) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FileSystem.get(FileSystem.java:300) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FsPath.getFileSystem(FsPath.java:264) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.start(ServerBase.java:116) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	... 2 more
coordinator-server  | Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/hdfs/HdfsConfiguration
coordinator-server  | 	at com.alibaba.fluss.fs.hdfs.HadoopFsPlugin.create(HadoopFsPlugin.java:70) ~[?:?]
coordinator-server  | 	at com.alibaba.fluss.fs.PluginFileSystemWrapper.create(PluginFileSystemWrapper.java:58) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FileSystem.lambda$getUnguardedFileSystem$3(FileSystem.java:400) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.utils.concurrent.LockUtils.inLock(LockUtils.java:41) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FileSystem.getUnguardedFileSystem(FileSystem.java:305) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FileSystem.get(FileSystem.java:300) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FsPath.getFileSystem(FsPath.java:264) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.start(ServerBase.java:116) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	... 2 more
coordinator-server  | Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hdfs.HdfsConfiguration
coordinator-server  | 	at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
coordinator-server  | 	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
coordinator-server  | 	at com.alibaba.fluss.classloading.ComponentClassLoader.loadClassFromComponentOnly(ComponentClassLoader.java:152) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.classloading.ComponentClassLoader.loadClass(ComponentClassLoader.java:115) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
coordinator-server  | 	at com.alibaba.fluss.fs.hdfs.HadoopFsPlugin.create(HadoopFsPlugin.java:70) ~[?:?]
coordinator-server  | 	at com.alibaba.fluss.fs.PluginFileSystemWrapper.create(PluginFileSystemWrapper.java:58) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FileSystem.lambda$getUnguardedFileSystem$3(FileSystem.java:400) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.utils.concurrent.LockUtils.inLock(LockUtils.java:41) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FileSystem.getUnguardedFileSystem(FileSystem.java:305) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FileSystem.get(FileSystem.java:300) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.fs.FsPath.getFileSystem(FsPath.java:264) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	at com.alibaba.fluss.server.ServerBase.start(ServerBase.java:116) ~[fluss-server-0.7.0.jar:0.7.0]
coordinator-server  | 	... 2 more

Solution

No response

Are you willing to submit a PR?

  • I'm willing to submit a PR!

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions