Alibaba Cloud Elasticsearch を使用して、HBase のデータを検索および分析できます。このトピックでは、DataWorks のデータ統合を使用して、Alibaba Cloud ES インスタンスにデータをオフラインで同期する方法について説明します。
背景情報
DataWorks は、データ開発、タスクスケジューリング、データ管理などの機能を統合した、ビッグデータ開発とガバナンスのための包括的なプラットフォームです。DataWorks の同期タスクを使用して、さまざまなデータソースから Alibaba Cloud ES にデータを迅速に移動できます。
次のデータソースがサポートされています。
Alibaba Cloud データベース: ApsaraDB for RDS (MySQL、PostgreSQL、SQL Server)、ApsaraDB for MongoDB、および ApsaraDB for HBase
Alibaba Cloud PolarDB-X (DRDS からアップグレード)
Alibaba Cloud MaxCompute
Alibaba Cloud Object Storage Service (OSS)
Alibaba Cloud Tablestore
HDFS、Oracle、FTP、DB2 などの自己ホスト型データソース。
シナリオ:
データベースまたはテーブルから Alibaba Cloud Elasticsearch にビッグデータをオフラインモードで同期します。詳細については、「データベース内のすべてのデータを Elasticsearch に同期するバッチ同期タスクを作成する」をご参照ください。
完全なビッグデータと増分ビッグデータをリアルタイムで Alibaba Cloud Elasticsearch に同期します。詳細については、「MySQL データベース全体をリアルタイムで Elasticsearch に同期する」をご参照ください。
前提条件
ApsaraDB for HBase クラスターが作成されていること。詳細については、「クラスターの購入」をご参照ください。
Alibaba Cloud Elasticsearch クラスターが作成され、クラスターの自動インデックス作成機能が有効になっていること。詳細については、「Alibaba Cloud Elasticsearch クラスターの作成」および「YML ファイルの設定」をご参照ください。
DataWorks ワークスペースが作成されていること。詳細については、「ワークスペースの作成」をご参照ください。
データは Alibaba Cloud ES にのみ同期できます。自己管理型の Elasticsearch インスタンスはサポートされていません。
HBase インスタンス、ES インスタンス、および DataWorks ワークスペースは、同じリージョンに存在する必要があります。
HBase インスタンス、ES インスタンス、および DataWorks ワークスペースは、同じタイムゾーンに存在する必要があります。そうでない場合、時間関連のデータを同期するときに、ソースデータと同期されたデータの間にタイムゾーンの差が生じる可能性があります。
課金
ES インスタンス料金の詳細については、「ES の課金項目」をご参照ください。
データ統合専用リソースグループの課金の詳細については、「データ統合専用リソースグループの課金 (サブスクリプション)」をご参照ください。
手順
ステップ 1: ソースデータの準備
この例では、次のテーブル作成ステートメントとテストデータを使用します。HBase クラスターにデータをインポートする方法の詳細については、「HBase Shell を使用してアクセスする」をご参照ください。
テーブル作成ステートメント
create 'student', {NAME => 'name'}, {NAME => 'ID'}, {NAME => 'gender'}テストデータ
put コマンドを使用して、テーブルにデータを挿入します。例:
put 'student', 'row1', 'name:a', 'xiaoming'。scan コマンドを使用して、テーブル内のデータを表示します。例:
scan 'student'。
ステップ 2: 専用リソースグループの購入と設定
データ統合専用リソースグループを購入し、VPC とワークスペースをリソースグループにアタッチします。専用リソースグループは、高速で安定したデータ転送を保証します。
DataWorks コンソールにログインします。
上部のナビゲーションバーでリージョンを選択します。左側のナビゲーションウィンドウで、[リソースグループ] をクリックします。
[専用リソースグループ] タブで、 をクリックします。
[DataWorks 専用リソース (サブスクリプション)] 購入ページで、[リソースタイプ] を [データ統合専用リソースグループ] に設定し、リソースグループの名前を入力して、[今すぐ購入] をクリックします。
詳細については、「ステップ 1: リソースグループの購入」をご参照ください。
作成した専用リソースグループの [操作] 列で、[ネットワーク設定] をクリックして VPC をアタッチします。
説明この例では、データ統合専用リソースグループを使用して VPC 経由でデータを同期します。詳細については、「IP アドレスホワイトリストの設定」をご参照ください。
データを同期するには、専用リソースを HBase インスタンスと Elasticsearch インスタンスの VPC に接続する必要があります。したがって、専用リソースを HBase インスタンスと Elasticsearch インスタンス両方の [VPC]、[ゾーン]、および [vSwitch] にアタッチする必要があります。ES インスタンスの VPC の詳細については、「Elasticsearch インスタンスの基本情報を表示する」をご参照ください。
重要VPC をアタッチした後、VPC の [vSwitch CIDR ブロック] を HBase クラスターと Elasticsearch クラスターのプライベート IP アドレスホワイトリストに追加する必要があります。詳細については、「Elasticsearch クラスターのパブリックまたはプライベート IP アドレスホワイトリストを設定する」をご参照ください。
左上隅にある戻るアイコンをクリックして、[リソースグループリスト] ページに戻ります。
専用リソースグループの [操作] 列で、[ワークスペースのアタッチ] をクリックして、宛先ワークスペースをアタッチします。
詳細については、「ステップ 2: リソースグループをワークスペースにバインドする」をご参照ください。
ステップ 3: データソースの追加
HBase と Elasticsearch のデータソースを DataWorks のデータ統合に追加します。
DataWorks のデータ統合ページに移動します。
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。
宛先ワークスペースの [操作] 列で、 を選択します。
データ統合ページの左側のナビゲーションウィンドウで、[データソース] をクリックします。
HBase データソースを追加します。
[データソースリスト] ページで、[データソースの追加] をクリックします。
[データソースの追加] ダイアログボックスで、[HBase] を検索して選択します。
[HBase データソースの追加] ダイアログボックスで、[基本情報] セクションのデータソースパラメーターを設定できます。
詳細については、「HBase データソースの設定」をご参照ください。
[接続設定] セクションで、[接続テスト] をクリックします。[接続済み] のステータスは、接続が成功したことを示します。
[完了] をクリックします。
同様の方法で Elasticsearch データソースを追加します。詳細については、「Elasticsearch データソースの追加」をご参照ください。
ステップ 4: オフライン同期タスクの設定と実行
オフライン同期タスクは、専用リソースグループを使用して実行されます。専用リソースグループは、データ統合のデータソースからデータを取得し、ES インスタンスにデータを書き込みます。
バッチ同期タスクは、コードレス UI またはコードエディタを使用して設定できます。このトピックでは、コードレス UI を使用してバッチ同期タスクを設定する方法について説明します。コードエディタの使用方法の詳細については、「コードエディタを使用してバッチ同期タスクを設定する」および「Elasticsearch Writer」をご参照ください。
このトピックでは、従来のデータ開発 (DataStudio) ページを例として、オフライン同期タスクの作成方法を説明します。
DataWorks のデータ開発ページに移動します。
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。
宛先ワークスペースの [操作] 列で、 を選択します。
オフライン同期タスクを作成します。
左側のナビゲーションウィンドウのデータ開発 (
アイコン) タブで、 を選択し、画面の指示に従ってワークフローを作成します。作成したワークフローを右クリックし、 を選択します。
[ノードの作成] ダイアログボックスで、ノード名を入力し、[確認] をクリックします。
ネットワークとリソースを設定します。
[ソース] セクションで、[ソース] を HBase に、[データソース名] をデータソースの名前に設定します。
[リソースグループ] で、専用リソースグループを選択します。
[宛先] セクションで、[宛先] を Elasticsearch に、[データソース名] を宛先データソースに設定します。
[次へ] をクリックします。
タスクを設定します。
[ソース] セクションで、同期するテーブルを選択します。
[宛先] セクションでパラメーターを設定できます。
[フィールドマッピング] セクションで、[ソースフィールド] と [宛先フィールド] の間のマッピングを設定します。詳細については、「コードレス UI を使用してオフライン同期タスクを設定する」をご参照ください。
[チャネルコントロール] セクションで、チャネルパラメーターを設定できます。
詳細については、「コードレス UI を使用してバッチ同期タスクを設定する」をご参照ください。
タスクを実行します。
(オプション) ページの右側で、[スケジューリング設定] をクリックして、必要に応じてスケジューリングパラメーターを設定します。詳細については、「スケジューリング設定」をご参照ください。
ノードエディターの上にある保存アイコンをクリックして、タスクを保存します。
ノードエディターの上にある送信アイコンをクリックして、タスクを送信します。
タスクのスケジューリングプロパティを設定すると、タスクは定期的に実行されます。ノードエディターの右上隅にある実行アイコンをクリックして、タスクをすぐに実行することもできます。
運用ログに
Shell run successfully!と表示された場合、タスクは正常に実行されています。
ステップ 5: データ同期結果の確認
Elasticsearch クラスターの Kibana コンソールにログインし、プロンプトに従って Kibana コンソールのホームページに移動します。
Kibana コンソールへのログイン方法の詳細については、「Kibana コンソールにログインする」をご参照ください。
説明この例では、Elasticsearch V7.10.0 クラスターを使用します。他のバージョンのクラスターでの操作は異なる場合があります。コンソールでの実際の操作が優先されます。
表示されたページの右上隅で、[Dev Tools] をクリックします。
[コンソール] タブで、次のコマンドを実行して同期されたデータを表示します。
POST /student_info/_search?pretty { "query": { "match_all": {}} }説明student_infoは、オフライン同期タスクで宛先に設定したインデックス名です。