Use HBase with Ozone

Prerequisites

To integrate HBase with Ozone, you need an up-and-running ADH cluster (version 4.3.0 and above) with at least the following services installed:

  • Core configuration;

  • ADPG;

  • Zookeeper;

  • YARN;

  • HBase;

  • Ozone.

In this example it is expected that the Ozone’s ozone.service.id parameter is set to adho.

IMPORTANT

Consider the following restrictions before the setup:

  • At least three Ozone Datanode components should be installed.

  • There is no automatic HBase migration from HDFS to Ozone for existing clusters. Such reconfiguration requires manually deleting the /hbase/meta-region-server znode in Zookeeper.

Setup

  1. In ADCM, open the HBase service configuration page and turn on the Use Ozone switch. Fill in the appeared configuration parameters — they will be used for automatic volume and bucket creation. For example, set them as follows:

    • Bucket Name — data

    • Ozone Quota — 10GB (optional)

    • Ozone Replication — ONE (optional)

    • Ozone Replication Type — RATIS (optional)

    • Ozone Volume Name — hbase

      NOTE
      Currently, only the RATIS replication type is supported for Ozone buckets used for HBase data storage.
  2. Expand the hbase-site.xml parameter group and set the hbase.unsafe.stream.capability.enforce parameter to false.

  3. In the Ozone service configuration, expand the ozone-site.xml parameter group and set the following parameters to true:

    • ozone.client.hbase.enhancements.allowed

    • ozone.client.incremental.chunk.list

    • ozone.client.stream.putblock.piggybacking

    • ozone.fs.hsync.enabled

    • ozone.hbase.enhancements.allowed

  4. Restart Ozone and HBase.

Create a table

  1. On a host with the HBase client installed, run the HBase shell:

    $ hbase shell
  2. Inside the shell, run the following command to create a table:

    create 'test_ofs', 'cf'
  3. Put some data into the table:

    put 'test_ofs', 'row1', 'cf:qual1', 'value1'
  4. Verify the data presence:

    scan 'test_ofs'

    The expected output is:

    ROW                                   COLUMN+CELL
     row1                                 column=cf:qual1, timestamp=2026-06-03T12:25:24.662, value=value1
  5. Perform a flush to send data to physical storage:

    flush 'test_ofs'
  6. Exit the HBase shell and verify the data presence in Ozone:

    $ ozone fs -ls ofs://adho/hbase/data/data/default/test_ofs

    The expected output should be similar to:

    drwxrwxrwx   - hbase macbook          0 2026-06-03 12:25 ofs://adho/hbase/data/data/default/test_ofs/.tabledesc
    drwxrwxrwx   - hbase macbook          0 2026-06-03 12:25 ofs://adho/hbase/data/data/default/test_ofs/e61cde87de4f59b5f78327faecad5676

Delete a table

  1. On a host with the HBase client installed, run the HBase shell:

    $ hbase shell
  2. Inside the shell, run the following command to delete a row:

    deleteall 'test_ofs', 'row1'
  3. Verify the row deletion:

    scan 'test_ofs'

    The expected output is:

    hbase:003:0> scan 'test_ofs'
    ROW                                   COLUMN+CELL
    0 row(s)
  4. Disable the table:

    disable 'test_ofs'
  5. Delete the table:

    drop 'test_ofs'
  6. Exit the HBase shell and verify that the data was physically removed from Ozone:

    $ ozone fs -ls ofs://adho/hbase/data/data/default/test_ofs

    The expected output is:

    ls: `ofs://adho/hbase/data/data/default/test_ofs': No such file or directory
Found a mistake? Seleсt text and press Ctrl+Enter to report it