Stay organized with collections Save and categorize content based on your preferences.

Create an instance and write data with the HBase shell

This page explains how to use the HBase shell to connect to a Cloud Bigtable instance, perform basic administrative tasks, and read and write data in a table.

If you do not want to use the HBase shell, follow the quickstart using the cbt tool instead.

This quickstart uses Cloud Shell in the Google Cloud console to run the HBase shell. For improved performance, you can install the HBase shell on your own machine instead.

Before you begin

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Cloud project. Learn how to check if billing is enabled on a project.

  3. Enable the Cloud Bigtable and Cloud Bigtable Admin APIs.

    Enable the APIs

Create a Bigtable instance

  1. Open the Create Instance page in the Google Cloud console.

    Open the Create Instance page

    Screenshot of the Create instance page

  2. For Instance name, enter Quickstart instance.

  3. For Instance ID, enter quickstart-instance.

  4. For Storage type, select SSD.

  5. For Cluster ID, enter quickstart-instance-c1.

  6. For Region, select us-east1.

  7. For Zone, select us-east1-c.

  8. Click Create to create the instance.

Connect to your instance

  1. Open a terminal window in Cloud Shell.

    Open in Cloud Shell

  2. To use the HBase shell with the Cloud Bigtable HBase client for Java, you must install a Java 8 runtime environment. Other versions of Java are not supported. Install and set up the Java 8 environment by running the following commands:

    sudo apt-get update
    sudo apt-get install openjdk-8-jdk-headless
    export JAVA_HOME=$(update-alternatives --list java | tail -1 | sed -E 's/\/bin\/java//')
  3. Clone the repository that contains the HBase shell files, then change to the directory for the HBase shell:

    git clone
    cd cloud-bigtable-examples/quickstart
  4. Start the HBase shell:


Now you're connected!

Read and write data

Bigtable stores data in tables, which contain rows. Each row is identified by a row key.

Data in a row is organized into column families, which are groups of columns. A column qualifier identifies a single column within a column family.

There can be multiple time-stamped cells at the intersection of a row and column.

  1. Create a table named my-table, with one column family named cf1:

    create 'my-table', 'cf1'

    The shell displays output similar to the following:

    0 row(s) in 1.5210 seconds
    => Hbase::Table - my-table
  2. List your tables:


    The shell displays output similar to the following:

    1 row(s) in 1.3580 seconds
    => ["my-table"]
  3. Put the values test-value1 and test-value2 in the row r1, using the column family cf1 and the column qualifier c1:

    put 'my-table', 'r1', 'cf1:c1', 'test-value1'
    put 'my-table', 'r1', 'cf1:c1', 'test-value2'
  4. Use the scan command to scan the table and read the latest two versions of the data you added:

    scan 'my-table', {VERSIONS => 2}

    The shell displays output similar to the following:

     r1      column=cf1:c1, timestamp=1679495055049, value=test-value1
     r1      column=cf1:c1, timestamp=1679494856213, value=test-value2
    1 row(s) in 1.2120 seconds

    Two timestamped values are stored for the same column in row r1.

  5. Delete the table my-table:

    disable 'my-table'
    drop 'my-table'
  6. Type exit and press Enter to exit the HBase shell. You will see a series of log messages after you exit, which is normal.

Clean up

To avoid incurring charges to your Google Cloud account for the resources used on this page, follow these steps.

  1. Open the list of Bigtable instances in the Google Cloud console.

    Open the instance list

  2. Click Quickstart instance.
  3. Click Delete instance.

    Screenshot of the
    'Delete instance' pane

  4. Type quickstart-instance, then click Delete to delete the instance.

What's next