このトピックでは、HBase から MaxCompute へデータを増分でアーカイブする方法について説明します。
重要
Incremental Archive to MaxCompute 機能は 2023 年 6 月 16 日に廃止されました。この日以降に購入した LTS インスタンスでは、この機能を使用できません。2023 年 6 月 16 日より前に LTS インスタンスを購入した場合は、この機能を引き続き使用できます。
前提条件
-
LTS が有効化されていること。
-
HBase のデータソースが追加されていること。
-
MaxCompute のデータソースが追加されていること。
サポートされているバージョン
-
セルフマネージド HBase 1.x および 2.x。
-
EMR HBase。
-
ApsaraDB for HBase Standard Edition、 ApsaraDB for HBase Performance-enhanced Edition (クラスターモード)、および Lindorm。
制限事項
-
リアルタイムのデータアーカイブは、HBase の先行書き込みログ (WAL) に基づいています。そのため、バルクローディングによってインポートされたデータはエクスポートできません。
ログのライフサイクル
-
アーカイブを有効にすると、消費されないログはデフォルトで 48 時間保持されます。この期間を過ぎると、ログサブスクリプションは自動的にキャンセルされ、保持されていたデータは自動的に削除されます。
-
同期タスクを停止せずに LTS インスタンスを解放すると、タスクは一時停止し、データ消費は停止します。
アーカイブジョブの送信
-
LTS コンソールに移動します。左側のナビゲーションペインで、[Lindorm/HBase Export] > [Incremental Archive to MaxCompute] を選択します。
-
[Create Job] をクリックします。ジョブ作成ページで、[Task Name] (任意) を指定し、ソースクラスターと送信先クラスターを選択して、エクスポートする HBase テーブルを指定します。[Table Mapping] セクションで、列マッピング JSON を設定します。
tableModeパラメータをwideTable(ワイドテーブルモード) に設定できます。ジョブを送信する前に、hbase.master.logcleaner.ttlパラメータで定義されているソースクラスターのログ保持期間が、ジョブの失敗を防ぐのに十分な長さであることを確認してください。設定が完了したら、[Create] をクリックします。この設定により、wal-testHBase テーブルのリアルタイムデータが MaxCompute にアーカイブされます。-
アーカイブされる列は、
cf1:a、cf1:b、cf1:c、およびcf1:dです。 -
mergeIntervalパラメータは、アーカイブ間隔 (ミリ秒) を指定します。デフォルトは86400000(1 日) です。 -
mergeStartAtパラメータは、ジョブの開始時刻をyyyyMMddHHmmss形式で設定します。たとえば20190930000000のように過去のタイムスタンプを使用できます。この場合、2019 年 9 月 30 日 00:00:00 からデータのアーカイブが開始されます。
-
-
テーブルのアーカイブ進捗を確認します。ジョブを送信した後、ジョブ詳細ページに移動します。[Real-time Synchronization Channel] セクションには、同期レイテンシーとオフセットが表示されます。[Table Merge] セクションには、マージジョブが表示されます。マージが完了したら、MaxCompute でテーブルの最新パーティションをクエリできます。このページには、各コンポーネントのステータスが表示されます。たとえば、[Table Creation Details] のステータスが SUCCEEDED、[Real-time Synchronization Channel] が同期レイテンシー 4520 ms で RUNNING、[Table Merge] が進捗 47.50% で RUNNING と表示されます。
-
MaxCompute コンソールにログオンし、テーブルデータをクエリします。
SELECTステートメント (例:SELECT * from hbase2odps.wal_test_xxx WHERE pt = 'xxxxxxxx') を実行して、アーカイブされたデータをクエリします。結果に rowkey、cf1_string、cf1_int、cf1_long、cf1_short、cf1_decimal、cf1_double、cf1_float、cf1_boolean、cf1_hexstring、および pt などの列が含まれていることを確認します。これにより、HBase から MaxCompute へのデータアーカイブが正常に完了したことを確認できます。
パラメータ
エクスポートされる各テーブルの設定は、次の形式を使用します:
hbaseTable/odpsTable {"cols": ["cf1:a|string", "cf1:b|int", "cf1:c|long", "cf1:d|short","cf1:e|decimal", "cf1:f|double","cf1:g|float","cf1:h|boolean","cf1:i"], "mergeInterval": 86400000, "mergeStartAt": "20191008100547"}
hbaseTable/odpsTable {"cols": ["cf1:a", "cf1:b", "cf1:c"], "mergeStartAt": "20191008000000"}
hbaseTable {"mergeEnabled": false} // マージ操作は実行されません。
エクスポート設定は、hbaseTable、odpsTable、および tbConf の 3 つのパートで構成されます。
-
hbaseTable: ソース HBase テーブルを指定します。 -
odpsTable: 任意。送信先テーブルの名前を指定します。デフォルトでは、この名前は HBase テーブル名と同じです。MaxCompute のテーブル名ではピリオド (.) とハイフン (-) はサポートされません。これらの文字は自動的にアンダースコア (_) に変換されます。 -
tbConf: テーブルのアーカイブ動作を指定します。次の表に、サポートされているパラメータを示します。
|
パラメータ |
説明 |
例 |
|
cols |
エクスポートする列と、そのデータ型を指定します。データ型を省略すると、システムは値を HexString 形式に変換します。 |
"cols": ["cf1:a", "cf1:b", "cf1:c"] |
|
mergeEnabled |
キーバリュー (KV) テーブルをワイドテーブルに変換するかどうかを指定します。デフォルト: |
"mergeEnabled": false |
|
mergeStartAt |
マージ操作の開始時刻を指定します。過去の時刻を指定できます。値は |
"mergeStartAt": "20191008000000" |
|
mergeInterval |
マージ操作を実行する間隔 (ミリ秒) を指定します。デフォルト値は |
"mergeInterval": 86400000 |