Hadoop でのインタラクティブなビッグデータ分析中に発生する高いクエリレイテンシーを解決するには、データを Alibaba Cloud Elasticsearch クラスターに同期して分析します。Elasticsearch は、さまざまなクエリタイプ、特にアドホッククエリに対して、数秒で結果を返すことができます。このトピックでは、DataWorks の Data Integration サービスを使用して、大量のデータを Alibaba Cloud Elasticsearch クラスターに迅速に同期する方法について説明します。
背景
DataWorks は、ビッグデータエンジンを基盤とするエンドツーエンドのビッグデータ開発およびガバナンスプラットフォームです。 データ開発、タスクスケジューリング、データ管理などの機能が統合されています。 DataWorks の同期タスクを使用すると、さまざまなデータソースから Alibaba Cloud Elasticsearch にデータを迅速に同期できます。
-
サポートされているデータソース:
-
Alibaba Cloud データベース (MySQL、PostgreSQL、SQL Server、MongoDB、HBase)
-
Alibaba Cloud PolarDB-X (DRDS からアップグレード)
-
Alibaba Cloud MaxCompute
-
Alibaba Cloud OSS
-
Alibaba Cloud Tablestore
-
HDFS、Oracle、FTP、DB2、およびその他のサポートされているデータベースタイプのセルフマネージドバージョン
-
-
シナリオ:
-
ビッグデータの Alibaba Cloud Elasticsearch へのオフライン同期。 データベース全体または特定のテーブルのすべてのデータを同期できます。 詳細については、「MySQL データベース全体の Elasticsearch へのオフライン同期」をご参照ください。
-
ビッグデータの Alibaba Cloud Elasticsearch へのリアルタイム同期。 この方法は、完全同期と増分同期の両方をサポートしています。 詳細については、「MySQL データベース全体の Elasticsearch へのリアルタイム同期」をご参照ください。
-
前提条件
-
Alibaba Cloud Elasticsearch クラスターを作成し、その自動インデックス作成機能を有効にしておくこと。詳細については、「Alibaba Cloud Elasticsearch クラスターの作成」および「YML パラメーターの設定」をご参照ください。
説明データを同期できるのは Alibaba Cloud Elasticsearch クラスターのみです。セルフマネージドの Elasticsearch クラスターはサポートされていません。
-
DataWorks ワークスペースが作成されていること。詳細については、「ワークスペースの作成」をご参照ください。
-
データを含む Hadoop クラスターを所有していること。
-
Hadoop クラスター、Alibaba Cloud Elasticsearch クラスター、および DataWorks ワークスペースが同じリージョンにある必要があります。
-
Hadoop クラスター、Alibaba Cloud Elasticsearch クラスター、および DataWorks ワークスペースが同じタイムゾーンにある必要があります。そうでない場合、タイムゾーンの違いによってソースデータと同期データの間で不一致が発生する可能性があります。
課金
-
Alibaba Cloud Elasticsearch インスタンスの料金については、「Elasticsearch の課金項目」をご参照ください。
-
Data Integration リソースグループの料金については、「リソースグループの料金」をご参照ください。
操作手順
ステップ 1:専用リソースグループの作成
高速で安定したデータ転送を確保するために、Data Integration 用の専用リソースグループを購入し、ワークスペースおよび Virtual Private Cloud (VPC) に関連付けます。
-
DataWorks コンソールにログインします。
-
上部メニューでリージョンを選択します。左側メニューで、リソースグループ をクリックします。
-
専用リソースグループ タブで、 をクリックします。
-
[DataWorks 専用リソース (サブスクリプション)] 購入ページで、[専用リソースタイプ] を [Data Integration 用専用リソースグループ] に設定し、リソースグループの名前を入力してから、今すぐ購入 をクリックします。
詳細については、「ステップ 1:リソースグループの購入」をご参照ください。
-
作成した専用リソースグループを見つけ、Actions 列の ネットワーク設定 をクリックして、リソースグループを VPC に関連付けます。詳細については、「VPC のバインド」をご参照ください。
説明このトピックでは、Data Integration の専用リソースグループを使用して VPC 経でデータを同期する例を説明します。インターネット経由でデータを同期する方法については、「IP アドレスホワイトリストの設定」をご参照ください。
専用リソースグループは、Hadoop と Elasticsearch の両クラスターの VPC に接続し、両クラスター間のデータ同期を可能にする必要があります。したがって、専用リソースグループを、Hadoop クラスターと Elasticsearch クラスター両方の [Virtual Private Cloud (VPC)]、Zone、および [vSwitch] に関連付ける必要があります。Elasticsearch クラスターの VPC、ゾーン、vSwitch を表示するには、「Elasticsearch クラスターの基本情報の表示」をご参照ください。
重要専用リソースグループを VPC に関連付けた後、Hadoop クラスターと Elasticsearch クラスターの VPC プライベートアクセスホワイトリストに [vSwitch CIDR ブロック] を追加する必要があります。詳細については、「Elasticsearch クラスターのパブリックまたはプライベート IP アドレスホワイトリストの設定」をご参照ください。
-
ページの左上隅にある戻るアイコンをクリックして、Resource List ページに戻ります。
-
作成した専用リソースグループを見つけ、Actions 列の [ワークスペースの関連付け] をクリックして、リソースグループを宛先のワークスペースに関連付けます。
詳細については、「ステップ 2:ワークスペースをリソースグループに関連付ける」をご参照ください。
ステップ 2:データソースの追加
-
Data Integration ページに移動します。
-
DataWorks コンソール にログインします。
-
左側のナビゲーションペインで、ワークスペース をクリックします。
-
対象のワークスペースを見つけ、Actions 列で を選択します。
-
-
左側メニューで、データソース をクリックします。
-
HDFS データソースを追加します。
-
ソースインスタンス ページで、ソースインスタンスの追加 をクリックします。
-
ソースインスタンスの追加 ダイアログボックスで、[HDFS] を検索して選択します。
-
[HDFS データソースの追加] ページで、データソースパラメーターを設定します。
詳細については、「HDFS データソースの設定」をご参照ください。
-
接続テスト をクリックします。到達可能 が表示された場合、リソースグループはデータソースに接続されています。
-
完了 をクリックします。
-
-
同様に、Elasticsearch データソースを追加します。詳細については、「Elasticsearch データソース」をご参照ください。
ステップ 3:バッチ同期タスクの実行
バッチ同期タスクは、専用リソースグループで実行されます。リソースグループは Data Integration のデータソースからデータを取得し、宛先の Elasticsearch クラスターにデータを書き込みます。
-
バッチ同期タスクは、ウィザードモードまたはスクリプトモードで設定できます。このトピックでは、ウィザードモードを例に説明します。スクリプトモードの使用方法については、「スクリプトモードでのタスクの設定」および「Elasticsearch Writer」をご参照ください。
-
以下の手順は レガシ Data Development (DataStudio) ページで実行されます。
-
Data Development ページに移動します。
-
DataWorks コンソールにログインします。
-
左側ナビゲーションウィンドウで ワークスペース をクリックします。
-
送信先ワークスペースの Actions 列で、 を選択します。
-
-
オフライン同期ノードを作成します。
-
Data Development (
) タブで、 を選択します。 -
作成したワークフローを右クリックし、 を選択します。
-
ノードの作成 ダイアログボックスで、ノード名を入力し、OK をクリックします。
-
-
ネットワークとリソースを設定します。
-
データソース セクションで、データソース を HDFS に、ソースインスタンス名 を同期したい HDFS データソースの名前に設定します。
-
リソースグループ セクションで、専用リソースグループを選択します。
-
データ宛先 セクションで、データ宛先 を Elasticsearch に、ソースインスタンス名 を Elasticsearch データソースの名前に設定します。
-
-
[次へ] をクリックします。
-
タスクを設定します。
-
データソース セクションで、同期したいテーブルを選択します。
-
データ宛先 セクションで、パラメーターを設定します。
-
フィールドマッピング セクションで、ソースフィールド と ターゲットフィールド の間のマッピングを設定します。
-
チャンネル制御 セクションで、チャネルパラメーターを設定します。
詳細については、「ウィザードモードでのバッチ同期タスクの設定」をご参照ください。
-
-
タスクを実行します。
-
(オプション) タスクのスケジューリングプロパティを設定します。右側のペインで スケジューリング設定 をクリックし、必要に応じてパラメーターを設定します。パラメーターの詳細については、「スケジューリング設定」をご参照ください。
-
ノード設定タブのツールバーで、保存アイコンをクリックします。
-
ノード設定タブのツールバーで、コミットアイコンをクリックします。
スケジューリングプロパティを設定した場合、タスクは定期的に実行されます。ツールバーの実行アイコンをクリックして、タスクをすぐに実行することもできます。
実行ログに
Shell run successfully!メッセージが表示されたら、タスクが正常に完了したことを示します。
-
ステップ 4:結果の検証
-
宛先の Alibaba Cloud Elasticsearch クラスターの Kibana コンソールにログインします。
詳細については、「Kibana コンソールへのログイン」をご参照ください。
-
左側メニューで、[開発ツール] をクリックします。
-
[コンソール] で、次のコマンドを実行して同期されたデータを表示します。
POST /hive_esdoc_good_sale/_search?pretty { "query": { "match_all": {}} }説明hive_esdoc_good_saleは、データ同期スクリプトのindexパラメーターに指定した値です。データが正常に同期されると、次のような結果が返されます。
{ "took" : 6, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 4, "max_score" : 1.0, "hits" : [ { "_index" : "hive_esdoc_good_sale", "_type" : "_doc", "_id" : "2018-08-21 00:00:00", "_score" : 1.0, "_source" : { "trans_num" : 3, "click_cnt" : 7, "category" : "Outerwear", "buyer_id" : "lilei", "trans_amount" : 500.6, "brand" : "Brand A" } }, { "_index" : "hive_esdoc_good_sale", "_type" : "_doc", "_id" : "2018-08-23 00:00:00", "_score" : 1.0, "_source" : { "trans_num" : 5, "click_cnt" : 4, "category" : "Outerwear", "buyer_id" : "jimmy", "trans_amount" : 100.2, "brand" : "Brand E" } }, { "_index" : "hive_esdoc_good_sale", "_type" : "_doc", "_id" : "2018-08-22 00:00:00", "_score" : 1.0, "_source" : { "trans_num" : 2, "click_cnt" : 3 } } ] } }