Release Notes

This page contains release notes for each version of Cloud Bigtable.

Current version of the Cloud Bigtable API: V2
Current version of the Cloud Bigtable HBase client for Java: 0.9.4

November 9, 2016

Version 0.9.4 of the Cloud Bigtable HBase client for Java is now available. This version can be used with versions 1.0.x, 1.1.x, and 1.2.x of the HBase libraries.

This version includes the following changes:

  • Fixed an issue that resulted in increased CPU usage over time by reverting gRPC to 0.14.1 and Netty to 4.1.1.Final. This issue was introduced in the 0.9.3 release.
  • When there is a temporary authentication issue, the client now refreshes credentials in addition to refreshing the OAuth 2.0 token.
  • Fixed an issue that caused BufferedMutator#flush() to never complete.
  • Fixed a regression in performance in BufferedMutator that reduced throughput.
  • In the Cloud Dataflow connector, fixed an edge case in which dynamic splitting caused exceptions.

Known issues

The following issues affect version 0.9.4 of the Cloud Bigtable HBase client for Java:

  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.
  • The HBase shell's status command is not available.

October 5, 2016

Version 0.9.3 of the Cloud Bigtable HBase client for Java is now available. This version can be used with versions 1.0.x, 1.1.x, and 1.2.x of the HBase libraries.

This version includes the following changes:

  • Fixed performance issues when reading large rows. These issues were introduced in the 0.9.2 release.
  • Added utilities to resize clusters programmatically:

    • To set a specific number of nodes:

      try (BigtableClusterUtilities clusterUtilities = BigtableClusterUtilities.forInstance([PROJECT_ID], [INSTANCE_ID])) {
        clusterUtilities.setClusterSize([POSITIVE_INT]);
      }

    • To increment or decrement the number of nodes:

      try (BigtableClusterUtilities clusterUtilities = BigtableClusterUtilities.forInstance([PROJECT_ID], [INSTANCE_ID])) {
        clusterUtilities.incrementClusterSize([NEGATIVE_OR_POSITIVE_INT]);
      }

  • Re-added dynamic rebalancing to the Cloud Dataflow connector. Dynamic rebalancing allows Cloud Dataflow to split shards that are performing slowly into smaller shards, allowing the job to finish faster.

  • Added infinite retries for temporary authentication issues.
  • Removed the requirement for credentials when testing against the Cloud Bigtable emulator.
  • Added a new timer (google-cloud-bigtable.grpc.method.ReadRows.firstResponse.latency) for the latency of receiving the first response to a scan request. See "Reporting Cloud Bigtable Metrics" for details about using client-side metrics.

Known issues

The following issues affect version 0.9.3 of the Cloud Bigtable HBase client for Java:

  • The client's CPU usage can increase over time.
  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.
  • The HBase shell's status command is not available.

August 23, 2016

Version 0.9.2 of the Cloud Bigtable HBase client for Java is now available. This version can be used with versions 1.0.x, 1.1.x, and 1.2.x of the HBase libraries.

This version includes the following changes:

  • Integrated with Dropwizard Metrics to add client-side metrics. See "Reporting Cloud Bigtable Metrics" for details.
  • Added improved support for the Cloud Bigtable emulator. See "Using the Cloud Bigtable Emulator" for details.
  • Removed Cloud Dataflow dynamic rebalancing, which caused some rows to be read twice.
  • Upgraded gRPC to 1.0.0, improving performance and stability.
  • Removed protobuf files and Java artifacts for the v1 API.

Known issues

The following issues affect version 0.9.2 of the Cloud Bigtable HBase client for Java:

Client issues

  • Reading large rows though the HBase API is slower compared with the 0.9.1 release. This issue was fixed in the 0.9.3 release.
  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.

HBase shell issues

The HBase shell's status command is not available.

July 19, 2016

Version 0.9.1 of the Cloud Bigtable HBase client for Java is now available. This version can be used with versions 1.0.x, 1.1.x, and 1.2.x of the HBase libraries.

This version includes the following changes:

  • You must now use version 1.1.33.Fork19 of the netty-tcnative-boringssl-static library.
  • You can now use a single netty-tcnative-boringssl-static JAR file for all supported platforms (Linux, OS X, and Windows). See "Setting up encryption" for instructions on how to set up your pom.xml file.
  • Added two new options, which you can set in your hbase-site.xml file or programmatically:

    • google.bigtable.rpc.use.timeouts: Determines whether RPCs will time out after a specified number of milliseconds. Set to false (default) or true.
    • google.bigtable.rpc.timeout.ms: The timeout value, in milliseconds. Defaults to 60000 (1 minute) for consistency with HBase. For small gets and puts, 2000 is a reasonable timeout value. For other workloads, you will need to experiment to find an appropriate timeout value.
  • Fixed an issue that caused IPv6 addresses to be used in environments that do not support IPv6, such as Docker containers that are configured to use only IPv4.

  • Calls to getTable() are now five to ten times faster.
  • Added a BigtableInstanceClient, accessible from BigtableSession, that you can use for administering your instance and cluster.

Known issues

The following issues affect version 0.9.1 of the Cloud Bigtable HBase client for Java:

Client issues

  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.

HBase shell issues

The HBase shell's status command is not available.

June 29, 2016

Service changes

Cloud Bigtable is now generally available.

Each Cloud Bigtable cluster is now contained within an instance, which is a container for your cluster. For instances created before June 29, 2016, the instance ID is identical to the cluster ID. (There is one exception to this rule: If you had multiple clusters with the same ID before June 29, 2016, your instance IDs will end with -1, -2, and so on, so that each instance has a unique ID.)

V2 of the Cloud Bigtable RPC API is now available. You can write custom gRPC clients that target this API.

HBase client for Java

Version 0.9.0 of the Cloud Bigtable HBase client for Java is now available. This version can be used with versions 1.0.x, 1.1.x, and 1.2.x of the HBase libraries. For instructions on upgrading your client, see "Upgrading Cloud Bigtable Client Libraries."

This version includes the following changes:

  • To connect to Cloud Bigtable, you must now specify a project ID and instance ID. In previous versions, you specified a project ID, cluster ID, and zone. See "Upgrading Cloud Bigtable Client Libraries" for details about how to update your code to reflect this change.
  • The FuzzyRowFilter filter is now supported.
  • The Cloud Dataflow connector now uses dynamic rebalancing when reading from Cloud Bigtable. Dynamic rebalancing allows Cloud Dataflow to split shards that are performing slowly into smaller shards, allowing the job to finish faster. See this blog post for more information about dynamic rebalancing.
  • You can now use the Cloud Dataflow connector with Cloud Dataflow 1.6.

Known issues

The following issues affect version 0.9.0 of the Cloud Bigtable HBase client for Java:

Client issues
  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.
HBase shell issues
  • When the hbase-site.xml file contains incomplete or incorrect configuration settings, the HBase shell provides unclear error messages.
  • The HBase shell's status command is not available.

Go client

To connect to Cloud Bigtable, you must now specify a project ID and instance ID. In previous versions, you specified a project ID, cluster ID, and zone. See "Upgrading Cloud Bigtable Client Libraries" for details about how to update your code to reflect this change.

Python client

A Python client for Cloud Bigtable is now available. This is an alpha release of the Python client. See the API overview for more information.

April 28, 2016

Version 0.3.0 of the Cloud Bigtable HBase client for Java is now available. This version can be used with versions 1.0.x, 1.1.x, and 1.2.x of the HBase libraries.

This version includes the following changes:

  • The method BufferedMutator#mutate() now uses bulk mutations, which improve throughput.
  • You can now perform bulk mutations without using the HBase API by calling the method BigtableSession#createBulkMutation().
  • Bulk mutations have been made more robust by retrying failed individual mutations in bulk.
  • You can now perform bulk reads without using the HBase API by calling the method BigtableSession#createBulkRead().
  • You can now delete row ranges in bulk by calling the method BigtableTableAdminGrpcClient#bulkDeleteRows() or using the HBase API's truncateTable() methods. In addition, the HBase API's truncateTable() methods no longer drop and recreate the table.
  • The method AbstractCloudBigtableTableFn#retrowException() has been renamed to AbstractCloudBigtableTableFn#rethrowException(). If you have created a subclass of AbstractCloudBigtableTableFn that uses this method, you must rename the method in your subclass.
  • You can now call the method org.apache.hadoop.hbase.client.Admin#modifyColumn() to alter an existing column. In addition, the HBase shell's alter command now allows you to alter an existing column.
  • The Google authentication library was updated to fix issues with long-running jobs in App Engine's flexible environment.

Known issues

The following issues affect version 0.3.0 of the Cloud Bigtable HBase client for Java:

Client issues

  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.

HBase shell issues

  • When the hbase-site.xml file contains incomplete or incorrect configuration settings, the HBase shell provides unclear error messages.
  • The HBase shell's status command is not available.

March 28, 2016

Version 0.2.4 of the Cloud Bigtable HBase client for Java is now available. The previous version was 0.2.2; version 0.2.3 was withdrawn.

This version includes the following changes:

General

  • Retry logic is improved for scans, mutations (puts), and gets. Note: All HBase Puts are now automatically retried even if no timestamp is set.
  • Throughput is significantly increased for asynchronous (BufferedMutator) operations.
  • Latency is reduced for synchronous operations.
  • Resolved several dependency contentions when using the client with the gRPC library.
  • Cloud Bigtable operations, such as the HBase shell quickstart, can now be used in Google Cloud Shell.

Cloud Dataflow connector

  • You can now use the Cloud Dataflow connector with Cloud Dataflow 1.5. In addition, the connector uses larger batch sizes when you use Cloud Dataflow 1.5.
  • Added a utility class, AbstractCloudBigtableDoFn, to the Cloud Dataflow connector. You can use this utility class to get a BigtableConnection for doing additional Cloud Bigtable work. For example, you can use this class to create a DoFn that performs additional Gets while doing a table scan.
  • Added a new static method, com.google.cloud.bigtable.dataflow.CloudBigtableIO.readBulk(), that can read an array of elements at a time. You can use the array of elements to perform more efficient bulk processing than possible for a single element.
  • You can now use Cloud Dataflow to import Hadoop sequence files generated by HBase.
  • The Cloud Dataflow connector can now use Cloud Bigtable Sources across more workers. A Source will now support up to 4,000 splits.
  • The Cloud Dataflow connector no longer performs validation lookups, which were generating many unnecessary requests.

Known issues

The following issues affect version 0.2.4 of the Cloud Bigtable HBase client for Java:

Client issues

  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.

HBase shell issues

  • When the hbase-site.xml file contains incomplete or incorrect configuration settings, the HBase shell provides unclear error messages.
  • The HBase shell's status command is not available.

November 12, 2015

Version 0.2.2 of the Cloud Bigtable HBase client for Java is now available. This version includes the following changes:

General

  • The hbase-client artifact is no longer a required dependency and should be removed from your pom.xml file.
  • You can now use OpenSSL for encryption instead of adding the ALPN library to your boot classpath. Using OpenSSL typically results in a 5% to 20% performance improvement for encryption. See "Using OpenSSL encryption" for details.
  • There is now a helper class that simplifies the process of creating a connection. See "Including connection settings in your code" for details.
  • The RowFilter filter is now supported. With this filter, you can use either the BinaryComparator comparator or the RegexStringComparator comparator with no flags and the EQUAL operator.
  • Scan performance has been improved.
  • Fixed an issue that could cause deletes to hang forever during scans.
  • If an error occurs while retrieving OAuth credentials, the client now retries several times before giving up.
  • When there are duplicate rows that contain the same row keys, column families, column qualifiers, and timestamps, the client now de-duplicates the rows.

Dataflow connector

  • The class CloudBigtableTableConfiguration.Builder no longer uses generics.
  • When a CloudBigtableIO exception occurs during a write, the connector now logs more detailed information.

HBase shell

  • You can now use the HBase shell's alter command to delete column families.
  • When the HBase shell's alter command runs successfully, it no longer prints an error message.
  • You can now use the HBase shell's truncate command, which disables, drops, and re-creates a table.

Known issues

The following issues affect version 0.2.2 of the Cloud Bigtable HBase client for Java:

Client issues

  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.

HBase shell issues

  • When the hbase-site.xml file contains incomplete or incorrect configuration settings, the HBase shell provides unclear error messages.
  • When you use the HBase shell's import-table command, and the target table's schema does not match the original table's schema, the HBase shell provides an unclear error message.
  • The HBase shell's put command returns an unclear error message when you try to put a value in a nonexistent column family.
  • The HBase shell's status command is not available.

August 31, 2015

Version 0.2.1 of the Cloud Bigtable HBase client for Java is now available. This version includes the following changes:

  • Java 8 is now supported.
  • A Cloud Dataflow connector for Cloud Bigtable is now available. See "Dataflow Connector for Cloud Bigtable" for details.
  • Fixed an issue with authentication tokens that could cause long-running applications to hang.
  • When you call Table.batch() to perform one or more Get operations, any Get operations that fail will now be retried.

Known issues

The following issues affect version 0.2.1 of the Cloud Bigtable HBase client for Java:

Client issues

  • The Cloud Bigtable HBase client for Java provides unclear error messages when ALPN is set up incorrectly.
  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.

HBase shell issues

  • When the hbase-site.xml file contains incomplete or incorrect configuration settings, the HBase shell provides unclear error messages.
  • The HBase shell's alter command always returns an error message, even when it succeeds.
  • When you use the HBase shell's import-table command, and the target table's schema does not match the original table's schema, the HBase shell provides an unclear error message.
  • The HBase shell's put command returns an unclear error message when you try to put a value in a nonexistent column family.
  • The HBase shell's status command is not available.
  • The HBase shell's truncate command is not available.

August 17, 2015

Version 0.2.0 of the Cloud Bigtable HBase client for Java is now available. This version includes the following changes:

  • Unnecessary dependencies have been removed from the client JAR, making it easier to use the client in a Maven pom.xml file. See "Using the Cloud Bigtable HBase Client for Java with Maven" for detailed instructions.
  • We now provide a single version of the client JAR, rather than separate shaded and unshaded versions.
  • The PageFilter filter is now supported.
  • When you create a table, you can now pre-split the table across multiple Cloud Bigtable nodes by using one of the following methods:

    • Admin.createTable(HTableDescriptor desc, byte[][] splitKeys)
    • Admin.createTable(HTableDescriptor desc, byte[] startKey, byte[] endKey, int numRegions)
    • Admin.createTableAsync(HTableDescriptor desc, byte[][] splitKeys)

    Similarly, when you run the HBase shell's create command, you can use the SPLITS option to pre-split a table. See "Splitting the table by row key" for details.

Known issues

The following issues affect version 0.2.0 of the Cloud Bigtable HBase client for Java:

Client issues

  • Java 8 is not currently supported. In addition, older versions of Java 7 may have compatibility issues; we recommend version 1.7.0u71 or later.
  • High-volume batch jobs may hang after an hour.
  • The Cloud Bigtable HBase client for Java provides unclear error messages when ALPN is set up incorrectly.
  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.

HBase shell issues

  • Java 8 is not currently supported. In addition, older versions of Java 7 may have compatibility issues; we recommend version 1.7.0u71 or later.
  • When the hbase-site.xml file contains incomplete or incorrect configuration settings, the HBase shell provides unclear error messages.
  • The HBase shell's alter command always returns an error message, even when it succeeds.
  • When you use the HBase shell's import-table command, and the target table's schema does not match the original table's schema, the HBase shell provides an unclear error message.
  • The HBase shell's put command returns an unclear error message when you try to put a value in a nonexistent column family.
  • The HBase shell's status command is not available.
  • The HBase shell's truncate command is not available.

June 22, 2015

Version 0.1.9 of the Cloud Bigtable HBase client for Java is now available. The previous version of the client was version 0.1.5; versions 0.1.6, 0.1.7, and 0.1.8 were not publicly released.

This version includes the following changes:

  • The Cloud Bigtable HBase client for Java is now available on Maven Central.
  • We now provide separate clients for HBase 1.0.x and HBase 1.1.x:
    • For HBase 1.0.x, use bigtable-hbase-1.0-0.1.9.jar.
    • For HBase 1.1.x, use bigtable-hbase-1.1-0.1.9.jar.
  • The class org.apache.hadoop.hbase.client.BigtableConnection is deprecated. Use one of the following classes instead:
    • For HBase 1.0.x, use com.google.cloud.bigtable.hbase1_0.BigtableConnection.
    • For HBase 1.1.x, use com.google.cloud.bigtable.hbase1_1.BigtableConnection.
  • The client's overall performance has been improved. In addition, get operations that retrieve large amounts of data (~10 MB or more) are now significantly faster.
  • Fixed an exception that could occur when writing tens of millions of rows in a single operation.
  • The HBase shell no longer prints the error message "Failed to find a usable hardware address from the network interfaces."
  • When exiting the HBase shell, the shell no longer prints a warning about open connections.
  • If you disable and drop a table, then create a new table with the same name, the HBase shell no longer reports that the new table is disabled.

Known issues

The following issues affect version 0.1.9 of the Cloud Bigtable HBase client for Java:

Client issues

  • Java 8 is not currently supported. In addition, older versions of Java 7 may have compatibility issues; we recommend version 1.7.0u71 or later.
  • The Cloud Bigtable HBase client for Java provides unclear error messages when ALPN is set up incorrectly.
  • When an error occurs, the Cloud Bigtable HBase client for Java may throw different exceptions than the standard HBase client.
  • When you create a connection, the Cloud Bigtable HBase client for Java does not validate your configuration settings. If the settings are incorrect, attempts to use the connection will fail.
  • For newly created connections, the first request is always slower than subsequent requests.

HBase shell issues

  • Java 8 is not currently supported. In addition, older versions of Java 7 may have compatibility issues; we recommend version 1.7.0u71 or later.
  • When the hbase-site.xml file contains incomplete or incorrect configuration settings, the HBase shell provides unclear error messages.
  • The HBase shell's alter command always returns an error message, even when it succeeds.
  • When you use the HBase shell's import-table command, and the target table's schema does not match the original table's schema, the HBase shell provides an unclear error message.
  • The HBase shell's put command returns an unclear error message when you try to put a value in a nonexistent column family.
  • The HBase shell's status command is not available.
  • The HBase shell's truncate command is not available.

May 6, 2015

First public beta release of Cloud Bigtable.

Send feedback about...

Cloud Bigtable Documentation