Repository navigation
HBase: HBCK2 misses dependencies #1575
Copy link
Copy link
Open
Labels
Description
Symptom
Currently reproduced in 26.3.0, 25.11.0 HBase 2.6.4, 2.6.3 and 2.6.2 and possibly in previous versions (unknown) if you have HBase backed by ABFS (Azure Blob File System) and you try in the HBase master to
hbck2 filesystem "my_table"
you end up with
stackable@hbase-master-default-0 /stackable/hbase-2.6.3-stackable25.11.0 $ hbck2 filesystem "my_table"
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/stackable/hbase-2.6.3-stackable25.11.0/lib/client-facing-thirdparty/log4j-slf4j-impl-2.17.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/stackable/hbase-operator-tools-1.3.0-fd5a5fb-hbase2.6.3-stackable25.11.0/hbase-hbck2/hbase-hbck2-1.3.0-fd5a5fb-stackable25.11.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
2026-07-09T12:53:34,853 WARN [main {}] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2026-07-09T12:53:35,636 WARN [main {}] client.ZKConnectionRegistry: ZKConnectionRegistry is deprecated. See https://hbase.apache.org/book.html#client.rpcconnectionregistry
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2737)
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:3569)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3612)
at org.apache.hadoop.fs.FileSystem.access$300(FileSystem.java:172)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3716)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3667)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:557)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:289)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:541)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:366)
at org.apache.hadoop.hbase.util.CommonFSUtils.getRootDir(CommonFSUtils.java:293)
at org.apache.hbase.FileSystemFsck.<init>(FileSystemFsck.java:44)
at org.apache.hbase.HBCK2.doCommandLine(HBCK2.java:1230)
at org.apache.hbase.HBCK2.run(HBCK2.java:1136)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:82)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:97)
at org.apache.hbase.HBCK2.main(HBCK2.java:1533)
Caused by: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2641)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2735)
... 16 more
Expectation
hbck2 should be able to perform operations from the terminal out of the box.
Workaround
It was necessary to
export HBASE_CLASSPATH=\
/stackable/hbase/lib/commons-lang3-3.18.0.jar:\
/stackable/hbase/lib/hadoop-azure-3.4.2-stackable26.3.0.jar:\
/stackable/hbase/lib/httpclient-4.5.14.jar:\
/stackable/hbase/lib/httpcore-4.4.16.jar:\
/stackable/hbase/lib/jackson-annotations-2.19.2.jar:\
/stackable/hbase/lib/jackson-core-2.19.2.jar:\
/stackable/hbase/lib/jackson-databind-2.19.2.jar:\
/stackable/hbase/lib/zookeeper-3.8.4.jar:\
/stackable/hbase/lib/hadoop-hdfs-client-3.4.2-stackable26.3.0.jar
in HBase master terminal. After this hbck2 completed operations without further errors.
Reactions are currently unavailable
Activity