從 HBase 複製到 Bigtable

Cloud Bigtable HBase 複寫程式庫是開放原始碼 Java 適用的 Cloud Bigtable HBase 用戶端的元件。您可以使用 HBase 複製服務,透過複製程式庫將資料從 HBase 集群非同步複製到 Bigtable 執行個體,因此可以從 HBase 執行線上遷移至 Bigtable。如要查看 README 和原始碼,請前往 GitHub 存放區

如要將資料從 HBase 離線遷移至 Bigtable,請參閱將資料從 HBase 離線遷移至 Bigtable

用途

  • 線上遷移至 Bigtable - 您可以搭配現有 HBase 資料的離線遷移作業,使用 Bigtable HBase 複製程式庫,從 HBase 遷移至 Bigtable,停機時間幾乎為零。
  • 資料復原 - 將 HBase 資料複製到異地 Bigtable 執行個體,以防發生意外。
  • 集中管理資料集 - 使用程式庫將多個位置的 HBase 叢集資料複製到單一 Bigtable 執行個體,該執行個體會自動處理叢集間的複製作業。
  • 擴展 HBase 涵蓋範圍 - 複製到 Bigtable 執行個體,該執行個體在目前 HBase 位置以外的位置有叢集。

總覽

Bigtable HBase 複製程式庫會擴充基本 HBase 複製服務。寫入 HBase 叢集的資料會以非同步方式複製到 Bigtable 執行個體,就像標準 HBase 複製功能將資料複製到另一個 HBase 叢集一樣。這個程式庫會使用來源 HBase 叢集的預先寫入記錄 (WAL),將異動事件推送至 Bigtable 執行個體。

您可以將整個 HBase 叢集複製到 Bigtable,也可以只複製特定資料表或資料欄系列。換句話說,HBase 複寫功能是在叢集、資料表或資料欄系列層級啟用。

從 HBase 複製到 Bigtable 的資料具有最終一致性

圖片

遷移至 Bigtable

有了 Bigtable HBase 複製程式庫,您不必暫停應用程式,即可遷移至 Bigtable。

從 HBase 線上遷移至 Bigtable 的大致步驟如下。詳情請參閱 README

  1. 開始前,請先按照設定和配置步驟操作。
  2. 在 HBase 叢集上啟用複製功能。
  3. 將 Bigtable 複製端點新增為「對等互連」
  4. 停用 Bigtable 對等互連。從該時間點開始,寫入 HBase 的資料會緩衝處理至 HBase 叢集。
  5. 緩衝區開始擷取新寫入的資料後,請按照 離線遷移指南的說明,遷移現有 HBase 資料的快照。
  6. 離線遷移完成後,請重新啟用 Bigtable 對等互連,讓緩衝區排空,並在 Bigtable 上重播寫入作業。
  7. 緩衝區排空後,請重新啟動應用程式,向 Bigtable 傳送要求。

設定及設定複製作業程式庫

如要使用 Bigtable HBase 複製功能,請先完成本節中的工作。

設定驗證機制

如要確保複寫程式庫有權寫入 Bigtable,請按照「建立服務帳戶」一文的步驟操作。將 roles/bigtable.user 角色指派給新建立的服務帳戶。

接著,在整個 HBase 叢集中,將下列內容新增至 hbase-site.xml 檔案。

<property>
    <name>google.bigtable.auth.json.keyfile</name>
    <value>JSON_FILE_PATH</value>
    <description>
        Service account JSON file to connect to Cloud Bigtable
    </description>
</property>

JSON_FILE_PATH 替換成您下載的 JSON 檔案路徑。

如要瞭解可設定的其他屬性,請參閱 HBaseToCloudBigtableReplicationConfiguration

建立目的地執行個體和資料表

如要從 HBase 複製到 Bigtable,請先建立 Bigtable 執行個體。Bigtable 執行個體可以有一個或多個叢集,以多個主要叢集的形式運作。HBase 複寫服務的要求會轉送至 Bigtable 執行個體中最接近的叢集,然後複寫到執行個體中的其他叢集。

Bigtable 目標資料表的名稱和資料欄系列必須與 HBase 資料表相同。如需使用 Bigtable 結構定義轉換工具建立與 HBase 資料表結構定義相同的資料表,請參閱將資料從 HBase 離線遷移至 Bigtable。即使您是複製資料而非匯入資料,步驟也相同。

設定設定屬性

在整個 HBase 叢集的 hbase-site.xml 中新增下列內容。

<property>
    <name>google.bigtable.project.id</name>
    <value>PROJECT_ID</value>
    <description>
      Bigtable project ID
    </description>
</property>
<property>
    <name>google.bigtable.instance.id</name>
    <value>INSTANCE_ID</value>
    <description>
       Bigtable instance ID
    </description>
</property>
<property>
    <name>google.bigtable.app_profile.id</name>
    <value>APP_PROFILE_ID</value>
    <description>
       Bigtable app profile ID
    </description>
</property>

更改下列內容:

  • PROJECT_ID:Bigtable 執行個體所在的 Google Cloud 專案。
  • INSTANCE_ID:您要將資料複製到其中的 Bigtable 執行個體 ID。
  • APP_PROFILE_ID:用於連線至 Bigtable 的應用程式設定檔 ID。

安裝複製程式庫

如要使用 Bigtable HBase 複寫程式庫,您需要在 HBase 叢集中的每個伺服器上安裝該程式庫。請使用與 HBase 版本 (1.x 或 2.x) 相對應的複製程式庫版本。

下載 JAR

如要取得複寫程式庫,請在 HBase shell 中執行下列指令。

wget BIGTABLE_HBASE_REPLICATION_URL

BIGTABLE_HBASE_REPLICATION_URL 換成複製程式庫 Maven 存放區中提供的最新 JAR 網址 (含依附元件)。檔案名稱類似於 https://repo1.maven.org/maven2/com/google/cloud/bigtable/bigtable-hbase-1.x-replication/1.0.0/bigtable-hbase-1.x-replication-1.0.0-jar-with-dependencies.jar

如要找出網址或手動下載 JAR,請按照下列步驟操作。

  1. 前往您使用的 HBase 版本適用的複製程式庫存放區。
  2. 按一下最新版本號碼,例如 1.0.0
  3. 找出 jar-with-dependencies 檔案 (通常位於頂端)。
  4. 你可以按一下滑鼠右鍵並複製網址,也可以點選下載檔案。

安裝 JAR

在每個 HBase 伺服器 (包括主伺服器和區域伺服器) 上,將剛下載的檔案複製到 HBase 類別路徑中的資料夾。舉例來說,您可以將檔案複製到 /usr/lib/hbase/lib/

新增 Bigtable 對等互連

如要從 HBase 複製到 Bigtable,必須新增 Bigtable 端點做為複製對等互連。

  1. 重新啟動 HBase 伺服器,確保載入複寫程式庫。
  2. 在 HBase Shell 中執行下列指令。
add_peer PEER_ID_NUMBER, ENDPOINT_CLASSNAME =>
'com.google.cloud.bigtable.hbaseHBASE_VERSION_NUMBER_x.replication.HbaseToCloudBigtableReplicationEndpoint`

更改下列內容:

  • PEER_ID_NUMBER:Bigtable 複寫對等的整數 ID。如要只針對選取的資料表啟用 HBase 複寫功能,請使用add_peer 選用參數

  • HBASE_VERSION_NUMBER:您使用的 HBase 版本號碼。HBase 1.x 請使用 1,HBase 2.x 則使用 2。(不支援 HBase 3.x)。

後續步驟