Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ All notable changes to this project will be documented in this file.
- stats-exporter: Add `0.31.0` ([#1664]).
- airflow: Add `3.3.1`, deprecate `3.2.2` ([#1665]).
- nifi: Ship `QueryNiFiReportingTask` with the image ([#1676]).
- hbase: Add `3.0.0` as an experimental version, with `hbase-opa-authorizer` `1.0.0`.
It does not include Phoenix (no HBase 3.x support yet) ([#1678]).

### Changed

Expand Down Expand Up @@ -76,6 +78,7 @@ All notable changes to this project will be documented in this file.
- airflow: Remove `3.1.6` ([#1665]).
- superset: Remove `6.0.0` ([#1673]).
- druid: Remove `30.0.1`, `35.0.1` ([#1677]).
- hbase: Remove `2.6.4` ([#1678]).

[#1593]: https://github.com/stackabletech/docker-images/pull/1593
[#1595]: https://github.com/stackabletech/docker-images/pull/1595
Expand All @@ -100,6 +103,7 @@ All notable changes to this project will be documented in this file.
[#1673]: https://github.com/stackabletech/docker-images/pull/1673
[#1676]: https://github.com/stackabletech/docker-images/pull/1676
[#1677]: https://github.com/stackabletech/docker-images/pull/1677
[#1678]: https://github.com/stackabletech/docker-images/pull/1678

## [26.7.0] - 2026-07-21

Expand Down
52 changes: 40 additions & 12 deletions hbase/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# syntax=docker/dockerfile:1.16.0@sha256:e2dd261f92e4b763d789984f6eab84be66ab4f5f08052316d8eb8f173593acf7
# check=error=true

# Selects the final-phoenix-* stage below. Set to "false" for HBase versions that Phoenix does not
# support yet (HBase 3.x), in which case hbase/phoenix must not be listed in boil-config.toml.
ARG WITH_PHOENIX=true

FROM local-image/hadoop/hadoop AS hadoop-builder

FROM local-image/hbase/hbase AS hbase-builder
Expand Down Expand Up @@ -50,21 +54,19 @@ rm /stackable/bin/export-snapshot-to-s3.env
chmod --recursive g=u /stackable
EOF

# Final Image
FROM local-image/java-base AS final
# Final Image, without Phoenix (added by final-phoenix-true)
FROM local-image/java-base AS final-base

ARG PRODUCT_VERSION
ARG RELEASE_VERSION
ARG HADOOP_HADOOP_VERSION
# Reassign the arg to `HADOOP_VERSION` for better readability.
ENV HADOOP_VERSION=${HADOOP_HADOOP_VERSION}
ARG HBASE_PROFILE
ARG HBASE_HBASE_VERSION
# Reassign the arg to `HBASE_VERSION` for better readability.
ENV HBASE_VERSION=${HBASE_HBASE_VERSION}
ARG HBASE_HBASE_OPERATOR_TOOLS_VERSION
ARG HBASE_HBASE_OPA_AUTHORIZER_VERSION
ARG HBASE_PHOENIX_VERSION
ARG STACKABLE_USER_UID

ARG NAME="Apache HBase"
Expand Down Expand Up @@ -98,9 +100,6 @@ COPY --chown=${STACKABLE_USER_UID}:0 --from=hbase-operator-tools /stackable/hbas
COPY --chown=${STACKABLE_USER_UID}:0 --from=hbase-operator-tools /stackable/bin/hbck2 /stackable/bin/hbck2
COPY --chown=${STACKABLE_USER_UID}:0 --from=hbase-operator-tools /stackable/bin/hbase-entrypoint.sh /stackable/hbase-${HBASE_VERSION}-stackable${RELEASE_VERSION}/bin/hbase-entrypoint.sh

COPY --chown=${STACKABLE_USER_UID}:0 --from=phoenix /stackable/phoenix /stackable/phoenix/
COPY --chown=${STACKABLE_USER_UID}:0 --from=phoenix /stackable/phoenix-${HBASE_PHOENIX_VERSION}-stackable${RELEASE_VERSION}-src.tar.gz /stackable

COPY --chown=${STACKABLE_USER_UID}:0 --from=hadoop-s3-builder /stackable/bin/export-snapshot-to-s3 /stackable/bin/export-snapshot-to-s3
COPY --chown=${STACKABLE_USER_UID}:0 --from=hadoop-s3-builder /stackable/hadoop/share/hadoop/tools/lib/ /stackable/hadoop/share/hadoop/tools/lib/

Expand Down Expand Up @@ -130,23 +129,52 @@ ln --symbolic --logical --verbose "/stackable/hbase-${HBASE_VERSION}-stackable${
chown --no-dereference ${STACKABLE_USER_UID}:0 /stackable/hbase
chmod g=u /stackable/hbase

# bin/hbase defaults HBASE_LOG_DIR to $HBASE_HOME/logs, which the web UI serves as /logs. The HBase
# tarball does not contain that directory. Jetty 9 (HBase 2.x) accepts a missing directory, but
# Jetty 12 (HBase 3.x) refuses to start the HTTP server ("Base Resource is not valid").
mkdir --parents "/stackable/hbase-${HBASE_VERSION}-stackable${RELEASE_VERSION}/logs"
chown ${STACKABLE_USER_UID}:0 "/stackable/hbase-${HBASE_VERSION}-stackable${RELEASE_VERSION}/logs"
chmod g=u "/stackable/hbase-${HBASE_VERSION}-stackable${RELEASE_VERSION}/logs"

ln --symbolic --logical --verbose "/stackable/hbase-operator-tools-${HBASE_HBASE_OPERATOR_TOOLS_VERSION}-stackable${RELEASE_VERSION}" /stackable/hbase-operator-tools
chown --no-dereference ${STACKABLE_USER_UID}:0 /stackable/hbase-operator-tools
chmod g=u /stackable/hbase-operator-tools

ln --symbolic --logical --verbose "/stackable/phoenix/phoenix-server-hbase-${HBASE_PROFILE}.jar" "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar"
chown --no-dereference ${STACKABLE_USER_UID}:0 "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar"
chmod g=u "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar"

# fix missing permissions
chmod g=u /stackable/async-profiler
chmod g=u /stackable/bin
chmod g=u /stackable/phoenix
chmod g=u /stackable/*-src.tar.gz
# the whole directory tree /stackable/hadoop/share/hadoop/tools/lib/ must be adapted
find /stackable/hadoop -type d -exec chmod g=u {} +
EOF

FROM final-base AS final-phoenix-true

ARG RELEASE_VERSION
ARG HBASE_PROFILE
ARG HBASE_PHOENIX_VERSION
ARG STACKABLE_USER_UID

COPY --chown=${STACKABLE_USER_UID}:0 --from=phoenix /stackable/phoenix /stackable/phoenix/
COPY --chown=${STACKABLE_USER_UID}:0 --from=phoenix /stackable/phoenix-${HBASE_PHOENIX_VERSION}-stackable${RELEASE_VERSION}-src.tar.gz /stackable

RUN <<EOF
ln --symbolic --logical --verbose "/stackable/phoenix/phoenix-server-hbase-${HBASE_PROFILE}.jar" "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar"
chown --no-dereference ${STACKABLE_USER_UID}:0 "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar"
chmod g=u "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar"

# fix missing permissions
chmod g=u /stackable/phoenix
chmod g=u /stackable/phoenix-*-src.tar.gz
EOF

# Phoenix does not support HBase 3.x yet
FROM final-base AS final-phoenix-false

FROM final-phoenix-${WITH_PHOENIX} AS final

ARG STACKABLE_USER_UID

# ----------------------------------------
# Checks
# This section is to run final checks to ensure the created final images
Expand Down
33 changes: 17 additions & 16 deletions hbase/boil-config.toml
Original file line number Diff line number Diff line change
@@ -1,22 +1,6 @@
[metadata.registries]
"oci.stackable.tech" = { namespace = "sdp" }

# Deprecated since 26.7.0
[versions."2.6.4".local-images]
"hbase/hbase" = "2.6.4"
"hbase/hbase-operator-tools" = "1.3.0-hbase2.6.4"
"hbase/phoenix" = "5.3.0-hbase2.6.4"
"hbase/hbase-opa-authorizer" = "0.3.0"
"hadoop/hadoop" = "3.4.3"
java-base = "11"
java-devel = "11"

[versions."2.6.4".build-arguments]
hbase-profile = "2.6"
delete-caches = "true"



# LTS since 26.7.0
[versions."2.6.6".local-images]
"hbase/hbase" = "2.6.6"
Expand All @@ -30,3 +14,20 @@ java-devel = "11"
[versions."2.6.6".build-arguments]
hbase-profile = "2.6"
delete-caches = "true"
with-phoenix = "true"

# Experimental in 26.11.0
[versions."3.0.0".local-images]
"hbase/hbase" = "3.0.0"
"hbase/hbase-operator-tools" = "1.3.0-hbase3.0.0"
# No hbase/phoenix: Phoenix does not support HBase 3.x yet (see with-phoenix below)
"hbase/hbase-opa-authorizer" = "1.0.0"
"hadoop/hadoop" = "3.4.3"
java-base = "17"
java-devel = "17"

[versions."3.0.0".build-arguments]
hbase-profile = "3.0"
delete-caches = "true"
# Selects the final-phoenix-false stage in the Dockerfile, which leaves out Phoenix
with-phoenix = "false"
6 changes: 6 additions & 0 deletions hbase/hbase-opa-authorizer/boil-config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,9 @@ java-devel = "11"

[versions."0.3.0".build-arguments]
delete-caches = "true"

[versions."1.0.0".local-images]
java-devel = "17"

[versions."1.0.0".build-arguments]
delete-caches = "true"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
base = "dc382926519d37fa979a1640adc7ba7ed61ea73a" # N.B. update once 1.0.0 is released
18 changes: 9 additions & 9 deletions hbase/hbase-operator-tools/boil-config.toml
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
# Note: The next Hbase version should use 1.4.0 if it is released.
# At the time of writing, the latest commit is b22878f.
[versions."1.3.0-hbase2.6.4".local-images]
[versions."1.3.0-hbase2.6.6".local-images]
"hadoop/hadoop" = "3.4.3"
"hbase/hbase" = "2.6.4"
"hbase/hbase" = "2.6.6"
"java-devel" = "11"

[versions."1.3.0-hbase2.6.4".build-arguments]
[versions."1.3.0-hbase2.6.6".build-arguments]
hbase-operator-tools-version = "1.3.0"
hbase-thirdparty-version = "4.1.12" # Needs to match https://github.com/apache/hbase/blob/rel/2.6.6/pom.xml
hbase-thirdparty-version = "4.1.13" # Needs to match https://github.com/apache/hbase/blob/rel/2.6.6/pom.xml
delete-caches = "true"

[versions."1.3.0-hbase2.6.6".local-images]
[versions."1.3.0-hbase3.0.0".local-images]
"hadoop/hadoop" = "3.4.3"
"hbase/hbase" = "2.6.6"
"java-devel" = "11"
"hbase/hbase" = "3.0.0"
"java-devel" = "17"

[versions."1.3.0-hbase2.6.6".build-arguments]
[versions."1.3.0-hbase3.0.0".build-arguments]
hbase-operator-tools-version = "1.3.0"
hbase-thirdparty-version = "4.1.13" # Needs to match https://github.com/apache/hbase/blob/rel/2.6.6/pom.xml
hbase-thirdparty-version = "4.1.14" # Needs to match https://github.com/apache/hbase/blob/rel/3.0.0/pom.xml
delete-caches = "true"
6 changes: 4 additions & 2 deletions hbase/hbase/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ ARG ASYNC_PROFILER_VERSION
ARG HADOOP_HADOOP_VERSION
# Reassign the arg to `HADOOP_VERSION` for better readability.
ENV HADOOP_VERSION=${HADOOP_HADOOP_VERSION}
# Value for -Dhadoop.profile; leave empty to omit the flag (required for HBase 3.x)
ARG HADOOP_PROFILE
ARG TARGETARCH
ARG TARGETOS
ARG STACKABLE_USER_UID
Expand Down Expand Up @@ -79,13 +81,13 @@ tar -czf /stackable/hbase-${NEW_VERSION}-src.tar.gz .
# I chose to replicate that exact behavior for consistency so please don't merge the two mvn runs into one unless you really know what you're doing!
# Cannot skip building tests here because the assembly plugin needs a shell script from the test directory.
mvn \
-Dhadoop.profile=3.0 \
${HADOOP_PROFILE:+-Dhadoop.profile=${HADOOP_PROFILE}} \
-Dhadoop-three.version=${HADOOP_VERSION}-stackable${RELEASE_VERSION} \
-DskipTests \
clean install

mvn \
-Dhadoop.profile=3.0 \
${HADOOP_PROFILE:+-Dhadoop.profile=${HADOOP_PROFILE}} \
-Dhadoop-three.version=${HADOOP_VERSION}-stackable${RELEASE_VERSION} \
-DskipTests \
-Dcheckstyle.skip=true \
Expand Down
27 changes: 15 additions & 12 deletions hbase/hbase/boil-config.toml
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
# Deprecated since 26.7.0
[versions."2.6.4".local-images]
# LTS since 26.7.0
[versions."2.6.6".local-images]
"hadoop/hadoop" = "3.4.3"
java-base = "11"
java-devel = "11"

[versions."2.6.4".build-arguments]
[versions."2.6.6".build-arguments]
async-profiler-version = "2.9"
delete-caches = "true"
# Selects the hadoop-3.0 Maven profile (activated by hadoop.profile=3.0 in 2.x)
hadoop-profile = "3.0"
# Note: 13.x and later are published as @cdxgen/cdxgen, 12.x and earlier as @cyclonedx/cdxgen.
# Find the latest version here: https://www.npmjs.com/package/@cdxgen/cdxgen
# renovate: datasource=npm packageName=@cdxgen/cdxgen
cdxgen-version = "13.0.1"



# LTS since 26.7.0
[versions."2.6.6".local-images]
# Experimental in 26.11
[versions."3.0.0".local-images]
"hadoop/hadoop" = "3.4.3"
java-base = "11"
java-devel = "11"
java-base = "17"
java-devel = "17"

[versions."2.6.6".build-arguments]
async-profiler-version = "2.9"
[versions."3.0.0".build-arguments]
# Should be uploaded to https://repo.stackable.tech/repository/packages/async-profiler
async-profiler-version = "4.4"
delete-caches = "true"
# Must stay empty: 3.x activates its Hadoop profiles only when hadoop.profile is NOT set
hadoop-profile = ""
# Note: 13.x and later are published as @cdxgen/cdxgen, 12.x and earlier as @cyclonedx/cdxgen.
# Find the latest version here: https://www.npmjs.com/package/@cdxgen/cdxgen
# renovate: datasource=npm packageName=@cdxgen/cdxgen
cdxgen-version = "13.0.1"
cdxgen-version = "13.1.0"
Loading