stackabletech / stackabletech/docker-images

HBase: HBCK2 misses dependencies

Open
#1,575 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

customer-request type/bug
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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.