Thanks, Charles!

That helps a lot. We now have reports from multiple organizations
(including ours, yours, and my previous workplace) running HBase 2.6
with JDK 21 in production.

Could you take a look at https://github.com/apache/hbase/pull/8691 and
let me know if you have any concerns with the proposal? To be safe, it
lists 2.6.8 as the minimum version in the 2.6 line and leaves the 2.5
line unconfirmed.

By the way, were any of your custom HBase or Hadoop patches required
specifically for JDK 21?

Best,
Junegunn


On Wed, Sep 23, 2026 at 9:33 PM Charles Connell via user
<[email protected]> wrote:
>
> Hi Junegunn,
>
> At HubSpot, we have been running RegionServers on HBase 2.6 on Java 21
> with Generational ZGC in production for several years. Our experience
> has been great. Here are some details:
> - HBase build: currently 2.6.3 with custom patches applied, you can
> view our fork at https://github.com/HubSpot/hbase
> - Hadoop build: currently 3.3.6 with custom patches, our fork is at
> https://github.com/HubSpot/hadoop
> - Server java version: Temurin-21.0.2+13
> - Client java version varies between 11 to 21
> - We add these JVM flags: --add-modules jdk.unsupported --add-opens
> java.base/java.io=ALL-UNNAMED --add-opens
> java.base/java.nio=ALL-UNNAMED --add-opens
> java.base/sun.nio.ch=ALL-UNNAMED --add-opens
> java.base/java.lang=ALL-UNNAMED --add-opens
> java.base/jdk.internal.ref=ALL-UNNAMED --add-opens
> java.base/java.lang.reflect=ALL-UNNAMED --add-opens
> java.base/java.util=ALL-UNNAMED --add-opens
> java.base/java.util.concurrent=ALL-UNNAMED --add-exports
> java.base/jdk.internal.misc=ALL-UNNAMED --add-exports
> java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-exports
> java.base/sun.net.dns=ALL-UNNAMED --add-exports
> java.base/sun.net.util=ALL-UNNAMED
>
> We have found ZGC to behave excellently for the workload of a
> RegionServer. When we were on G1 we sometimes had long GC pauses that
> introduced request latency. ZGC eliminated this problem because its
> pauses are only microseconds. Our only problem was with how ZGC
> interacted with the Neoverse N1 CPUs we were using that I documented
> at https://product.hubspot.com/blog/its-never-a-hardware-bug-until-it-is,
> but this would only affect you if you were using that CPU.
>
> Charles
>
>
>
> On Wed, Sep 23, 2026 at 4:20 AM Junegunn Choi <[email protected]> wrote:
> >
> > Hi all,
> >
> > I'm working on updating HBase's Java support matrix as part of
> > HBASE-29546 [1]. The proposed update is in PR #8691 [2]. I'd like to
> > hear from anyone running HBase 2.6 or later on JDK 21 or a newer JDK.
> >
> > As one data point, we've been running our HBase 2.4 and 2.6 servers in
> > production on JDK 21 to use Generational ZGC.
> >
> > Production experience would be particularly helpful, but testing
> > results and unsuccessful upgrade attempts are also welcome.
> >
> > If you have tried this combination, could you share:
> >
> > - HBase and Hadoop versions, including any vendor distribution or
> > custom patches.
> > - JDK distribution and version, and whether you use it for HBase
> > servers, clients, or both.
> > - Whether this is production or testing, and how long you have used it.
> > - Any compatibility issues, required JVM flags, or workarounds.
> > - Any changes in performance, GC behavior, or stability compared with
> > your previous JDK.
> >
> > A short reply is fine. Reports that everything works without issues
> > are useful too. These experiences will help us assess the support
> > levels and document any limitations.
> >
> > [1] https://issues.apache.org/jira/browse/HBASE-29546
> > [2] https://github.com/apache/hbase/pull/8691
> >
> > Thanks,
> > Junegunn

Reply via email to