stackabletech / stackabletech/docker-images
HBase: HBCK2 misses dependencies
Nobody has claimed this yet.
- Dominant language
- Dockerfile
- Stars
- 22
- Forks
- 6
- Avg merge
- 16h 59m
- Merged PRs (30d)
- 30
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.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start from the hbck2 filesystem command in an HBase master terminal and inspect how the product image supplies runtime dependencies for ABFS. Use the listed HBASE_CLASSPATH workaround as a reference, then verify that hbck2 filesystem "my_table" completes against Azure Blob File System without manually exporting those jars.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure, docker
- Domain
- devops
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100