# googleapis/java-bigtable-hbase architecture

> Architecture diagram of the GitHub repository googleapis/java-bigtable-hbase, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/googleapis/java-bigtable-hbase
- Repository: https://github.com/googleapis/java-bigtable-hbase
- Video tour (about a minute): https://gitdiagram.com/googleapis/java-bigtable-hbase/video

## Overview

This repository provides a Java HBase-compatible client for Cloud Bigtable, plus Hadoop MapReduce and Beam/Dataflow utilities for importing, exporting, snapshot restore, table creation, and synchronization. The main client workflow translates HBase requests and results through adapters and wrappers to Bigtable data/admin APIs. The graph also preserves the separate batch-data and validation workflows documented by the entry points and module tree. Detailed wiring is shown only where the sampled source or README supports it; unsampled utility internals are represented at their exact enclosing paths.

Main entry points: [`bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/AbstractBigtableTable.java`](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/AbstractBigtableTable.java) (Table and admin API), [`bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/Main.java`](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/Main.java) (Batch job dispatcher), [`bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/DataClientVeneerApi.java`](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/DataClientVeneerApi.java) (Veneer data client), [`bigtable-client-core-parent/bigtable-hbase/src/main/java/org/apache/hadoop/hbase/client/AbstractBigtableConnection.java`](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/org/apache/hadoop/hbase/client/AbstractBigtableConnection.java) (Connection and table API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["HBase client"]
  node_connection["Connection and table API"]
  node_table["Table and admin API"]
  node_read_adapters["Read adapters<br/>[ScanAdapter.java]"]
  node_mutation_adapters["Mutation adapters<br/>[Adapters.java]"]
  node_filter_adapters["Filter adapters"]
  node_admin_adapters["Admin adapters<br/>[TableAdapter.java]"]
end

subgraph group_api["Bigtable access"]
  node_data_wrapper["Data API wrapper"]
  node_admin_wrapper["Admin API wrapper"]
  node_veneer_data["Veneer data client"]
  node_shared_client["Shared client resources"]
end

subgraph group_batch["Batch workflows"]
  node_batch_entry["Batch job dispatcher<br/>[Main.java]"]
  node_sequence_jobs["Sequence-file jobs<br/>[ImportJob.java]"]
  node_snapshot_jobs["Snapshot import and restore"]
  node_beam_io["Beam table IO"]
  node_rowkey_sampling["Row-key sampling"]
end

subgraph group_migration["Migration tools"]
  node_sync_jobs["Table synchronization<br/>[SyncTableJob.java]"]
  node_schema_tools["Schema translation"]
  node_hadoop_jobs["MapReduce utilities<br/>[Driver.java]"]
end

node_hbase_apps(("HBase applications"))
node_bigtable[("Cloud Bigtable")]
node_hadoop(("Hadoop and HBase"))

node_hbase_apps -->|"connects through"| node_connection
node_connection -->|"provides"| node_table
node_table -->|"adapts reads"| node_read_adapters
node_table -->|"adapts mutations"| node_mutation_adapters
node_table -->|"translates filters"| node_filter_adapters
node_table -->|"adapts admin requests"| node_admin_adapters
node_table -->|"issues data calls"| node_data_wrapper
node_table -->|"issues admin calls"| node_admin_wrapper
node_data_wrapper -->|"implemented by"| node_veneer_data
node_shared_client -->|"creates and wraps"| node_veneer_data
node_veneer_data -->|"reads and mutates"| node_bigtable
node_admin_wrapper -->|"administers"| node_bigtable
node_hadoop -->|"submits jobs"| node_batch_entry
node_batch_entry -->|"dispatches import/export"| node_sequence_jobs
node_batch_entry -->|"dispatches snapshot import"| node_snapshot_jobs
node_batch_entry -->|"dispatches synchronization"| node_sync_jobs
node_beam_io -->|"requests row keys"| node_rowkey_sampling
node_rowkey_sampling -->|"samples keys"| node_bigtable
node_sequence_jobs -->|"imports or exports"| node_bigtable
node_snapshot_jobs -->|"restores snapshot data"| node_bigtable
node_sync_jobs -->|"reads and compares"| node_bigtable
node_hadoop -.->|"translates schemas"| node_schema_tools
node_hadoop -.->|"runs MapReduce jobs"| node_hadoop_jobs
node_hadoop_jobs -.->|"imports, exports, syncs"| node_bigtable

click node_connection "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/org/apache/hadoop/hbase/client/AbstractBigtableConnection.java"
click node_table "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/AbstractBigtableTable.java"
click node_read_adapters "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/read/ScanAdapter.java"
click node_mutation_adapters "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/Adapters.java"
click node_filter_adapters "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/filters/BigtableFilterAdapter.java"
click node_admin_adapters "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/admin/TableAdapter.java"
click node_data_wrapper "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/DataClientWrapper.java"
click node_admin_wrapper "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/AdminClientWrapper.java"
click node_veneer_data "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/DataClientVeneerApi.java"
click node_shared_client "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/SharedDataClientWrapperFactory.java"
click node_batch_entry "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/Main.java"
click node_sequence_jobs "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/sequencefiles/ImportJob.java"
click node_snapshot_jobs "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/hbasesnapshots/ImportJobFromHbaseSnapshot.java"
click node_beam_io "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-hbase-beam/src/main/java/com/google/cloud/bigtable/beam/CloudBigtableIO.java"
click node_rowkey_sampling "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-hbase-beam/src/main/java/com/google/cloud/bigtable/batch/common/CloudBigtableServiceImpl.java"
click node_sync_jobs "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/validation/SyncTableJob.java"
click node_schema_tools "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-hbase-1.x-parent/bigtable-hbase-1.x-tools/src/main/java/com/google/cloud/bigtable/hbase/tools/HBaseSchemaTranslator.java"
click node_hadoop_jobs "https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-hbase-1.x-parent/bigtable-hbase-1.x-mapreduce/src/main/java/com/google/cloud/bigtable/mapreduce/Driver.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_connection,node_table,node_read_adapters,node_mutation_adapters,node_filter_adapters,node_admin_adapters toneBlue
class node_data_wrapper,node_admin_wrapper,node_veneer_data,node_shared_client,node_bigtable toneAmber
class node_batch_entry,node_sequence_jobs,node_snapshot_jobs,node_beam_io,node_rowkey_sampling toneMint
class node_sync_jobs,node_schema_tools,node_hadoop_jobs toneRose
class node_hbase_apps,node_hadoop toneIndigo
```

## Components

### HBase client

- [Connection and table API](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/org/apache/hadoop/hbase/client/AbstractBigtableConnection.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/org/apache/hadoop/hbase/client/AbstractBigtableConnection.java`
- [Table and admin API](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/AbstractBigtableTable.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/AbstractBigtableTable.java`
- [Read adapters](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/read/ScanAdapter.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/read/ScanAdapter.java`
- [Mutation adapters](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/Adapters.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/Adapters.java`
- [Filter adapters](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/filters/BigtableFilterAdapter.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/filters/BigtableFilterAdapter.java`
- [Admin adapters](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/admin/TableAdapter.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/adapters/admin/TableAdapter.java`

### Bigtable access

- [Data API wrapper](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/DataClientWrapper.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/DataClientWrapper.java`
- [Admin API wrapper](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/AdminClientWrapper.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/AdminClientWrapper.java`
- [Veneer data client](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/DataClientVeneerApi.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/DataClientVeneerApi.java`
- [Shared client resources](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/SharedDataClientWrapperFactory.java): `bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/SharedDataClientWrapperFactory.java`

### Batch workflows

- [Batch job dispatcher](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/Main.java): `bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/Main.java`
- [Sequence-file jobs](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/sequencefiles/ImportJob.java): `bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/sequencefiles/ImportJob.java`
- [Snapshot import and restore](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/hbasesnapshots/ImportJobFromHbaseSnapshot.java): `bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/hbasesnapshots/ImportJobFromHbaseSnapshot.java`
- [Beam table IO](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-hbase-beam/src/main/java/com/google/cloud/bigtable/beam/CloudBigtableIO.java): `bigtable-dataflow-parent/bigtable-hbase-beam/src/main/java/com/google/cloud/bigtable/beam/CloudBigtableIO.java`
- [Row-key sampling](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-hbase-beam/src/main/java/com/google/cloud/bigtable/batch/common/CloudBigtableServiceImpl.java): `bigtable-dataflow-parent/bigtable-hbase-beam/src/main/java/com/google/cloud/bigtable/batch/common/CloudBigtableServiceImpl.java`

### Migration tools

- [Table synchronization](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/validation/SyncTableJob.java): `bigtable-dataflow-parent/bigtable-beam-import/src/main/java/com/google/cloud/bigtable/beam/validation/SyncTableJob.java`
- [Schema translation](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-hbase-1.x-parent/bigtable-hbase-1.x-tools/src/main/java/com/google/cloud/bigtable/hbase/tools/HBaseSchemaTranslator.java): `bigtable-hbase-1.x-parent/bigtable-hbase-1.x-tools/src/main/java/com/google/cloud/bigtable/hbase/tools/HBaseSchemaTranslator.java`
- [MapReduce utilities](https://github.com/googleapis/java-bigtable-hbase/blob/main/bigtable-hbase-1.x-parent/bigtable-hbase-1.x-mapreduce/src/main/java/com/google/cloud/bigtable/mapreduce/Driver.java): `bigtable-hbase-1.x-parent/bigtable-hbase-1.x-mapreduce/src/main/java/com/google/cloud/bigtable/mapreduce/Driver.java`

### Other components

- **HBase applications**
- **Cloud Bigtable**
- **Hadoop and HBase**

## Connections

- HBase applications → Connection and table API: connects through
- Connection and table API → Table and admin API: provides
- Table and admin API → Read adapters: adapts reads
- Table and admin API → Mutation adapters: adapts mutations
- Table and admin API → Filter adapters: translates filters
- Table and admin API → Admin adapters: adapts admin requests
- Table and admin API → Data API wrapper: issues data calls
- Table and admin API → Admin API wrapper: issues admin calls
- Data API wrapper → Veneer data client: implemented by
- Shared client resources → Veneer data client: creates and wraps
- Veneer data client → Cloud Bigtable: reads and mutates
- Admin API wrapper → Cloud Bigtable: administers
- Hadoop and HBase → Batch job dispatcher: submits jobs
- Batch job dispatcher → Sequence-file jobs: dispatches import/export
- Batch job dispatcher → Snapshot import and restore: dispatches snapshot import
- Batch job dispatcher → Table synchronization: dispatches synchronization
- Beam table IO → Row-key sampling: requests row keys
- Row-key sampling → Cloud Bigtable: samples keys
- Sequence-file jobs → Cloud Bigtable: imports or exports
- Snapshot import and restore → Cloud Bigtable: restores snapshot data
- Table synchronization → Cloud Bigtable: reads and compares
- Hadoop and HBase → Schema translation: translates schemas
- Hadoop and HBase → MapReduce utilities: runs MapReduce jobs
- MapReduce utilities → Cloud Bigtable: imports, exports, syncs
