このトピックでは、E-MapReduce(EMR)Hive データベースのデータを MaxCompute に同期するためのバッチ同期タスクを作成および構成する方法について説明します。
背景情報
Hive は、データの抽出、変換、ロードに使用される Hadoop ベースのデータウェアハウスツールです。 Hive を使用して、Hadoop に格納されている大規模データを格納、クエリ、分析できます。 Hive は構造化データファイルをデータベーステーブルにマッピングし、SQL クエリをサポートし、SQL ステートメントを Map または Reduce タスクに変換します。 Data Integration は、Hive と別のタイプのデータソース間のデータの同期をサポートしています。
データソースを準備する
MaxCompute データソースを追加する
MaxCompute データソースを追加します。詳細については、「MaxCompute データソースを追加する」をご参照ください。
Hive データソースを追加する
DataWorks コンソールの データソース ページで、[データソースの追加] をクリックします。 [データソースの追加] ダイアログボックスで、プロンプトに従って Hive データソースを追加します。 Hive データソースは、[alibaba Cloud インスタンスモード]、[接続文字列モード]、[CDH クラスタモード] のいずれかのモードで追加できます。 Hive データソースが Alibaba Cloud EMR に属している場合は、[alibaba Cloud インスタンスモード] でデータソースを追加することをお勧めします。 Hive データソースが Alibaba Cloud EMR に属していない場合は、[接続文字列モード] でデータソースを追加することをお勧めします。 ワークスペースが CDH コンピューティングエンジンに関連付けられている場合は、[CDH クラスタモード] で Hive データソースを追加することをお勧めします。詳細については、「Hive データソースを追加する」をご参照ください。
Data Integration 専用のリソースグループを作成し、リソースグループと EMR Hive データソース間のネットワーク接続を確立する
データを同期する前に、Data Integration 専用のリソースグループと EMR Hive データソース間のネットワーク接続を確立する必要があります。詳細については、「ネットワーク接続を構成する」をご参照ください。
Data Integration 専用のリソースグループと EMR Hive データソースが同じリージョンにある場合は、そのリージョンにある仮想プライベートクラウド(VPC)を使用して、リソースグループとデータソース間のネットワーク接続を確立できます。ネットワーク接続を確立するには、手順 1: Data Integration 専用のリソースグループを VPC に関連付け、リソースグループのカスタムルートを追加する の操作を実行します。
Data Integration 専用のリソースグループと EMR Hive データソースが異なるリージョンにある場合は、インターネット経由でリソースグループとデータソース間のネットワーク接続を確立できます。この場合、Data Integration 専用のリソースグループから EMR Hive データソースへのアクセスを許可するセキュリティグループルールを構成する必要があります。ほとんどの場合、関連する EMR クラスタのポート 10000、9093、および 8020 を有効にする必要があります。詳細については、手順 2: EMR Hive データソースへのアクセスを許可するセキュリティグループルールを構成する をご参照ください。
手順 1: Data Integration 専用のリソースグループを VPC に関連付け、リソースグループのカスタムルートを追加する
Data Integration 専用のリソースグループとデータソース間のネットワーク接続をインターネット経由で確立する場合は、この手順をスキップできます。
Data Integration 専用のリソースグループを VPC に関連付けます。
DataWorks コンソールの リソースグループページ に移動し、使用する Data Integration 専用のリソースグループを見つけ、ネットワーク設定[アクション] 列の をクリックします。
表示されるページの [VPC バインディング] タブで、[バインディングの追加] をクリックします。 [VPC バインディングの追加] パネルで、パラメータを構成してリソースグループを VPC に関連付けます。
VPC: EMR Hive データソースが存在する VPC を選択します。
ゾーンと VSwitch: EMR Hive データソースが存在するゾーンと vSwitch を選択することをお勧めします。データソースが存在するゾーンがドロップダウンリストに表示されない場合は、ランダムなゾーンと vSwitch を選択できます。選択した vSwitch がデータソースへの接続を提供していることを確認してください。
セキュリティグループ: EMR クラスタが属するセキュリティグループを選択します。選択したセキュリティグループは、次の要件を満たしている必要があります。
EMR クラスタの関連ポートが、セキュリティグループのインバウンドルールで有効になっている。ほとんどの場合、有効にする必要があるポートには、ポート 10000、9093、および 8020 が含まれます。セキュリティグループに関する情報は、ECS コンソールのセキュリティグループページ で表示できます。
Data Integration 専用のリソースグループが関連付けられている vSwitch の CIDR ブロックが、セキュリティグループルールで承認オブジェクトとして指定されている。
Data Integration 専用のリソースグループのカスタムルートを追加します。
説明前のサブステップでデータソースが存在するゾーンと vSwitch を選択した場合は、このサブステップをスキップできます。別のゾーンまたは vSwitch を選択した場合は、このサブステップの操作を実行して、Data Integration 専用のリソースグループのカスタムルートを追加する必要があります。
DataWorks コンソール にログインします。上部のナビゲーションバーで、目的のリージョンを選択します。 [リソースグループ] ページに移動し、使用する Data Integration 専用のリソースグループを見つけ、ネットワーク設定[アクション] 列の をクリックします。
表示されるページの [VPC バインディング] タブで、VPC の関連付けレコードを見つけ、[アクション] 列の [カスタムルート] をクリックします。
[カスタムルート] パネルで、[ルートの追加] をクリックします。 [ルートの追加] ダイアログボックスで、パラメータを構成して Data Integration 専用のリソースグループのカスタムルートを追加します。
宛先 VPC: EMR Hive データソースが存在するリージョンと VPC を選択します。
宛先 VSwitch: EMR Hive データソースが存在する vSwitch を選択します。
[ルートの生成] をクリックします。
手順 2: EMR Hive データソースへのアクセスを許可するセキュリティグループルールを構成する
Data Integration 専用のリソースグループと EMR Hive データソース間のネットワーク接続をインターネット経由で確立する場合は、リソースグループの Elastic IP アドレス(EIP)から EMR Hive データソースへのアクセスを許可するインバウンドセキュリティグループルールを構成する必要があります。ほとんどの場合、関連する EMR クラスタのポート 10000、9093、および 8020 を有効にする必要があります。
必要な IP アドレスまたは CIDR ブロックを取得します。
必要な IP アドレスまたは CIDR ブロックを取得する方法については、「IP アドレスホワイトリストを構成する」をご参照ください。
EMR コンソール にログインします。 [概要] ページで、目的のクラスタを見つけ、[アクション] 列の [ノード] をクリックして [ノード] タブに移動します。
[ノード] タブで、[ノードグループ名/ID] 列の目的のノードグループの左にあるプラス記号をクリックし、目的のノードを見つけて
アイコンをクリックします。表示されるページで、取得した EIP をセキュリティグループに追加します。
バッチ同期タスクを作成する
ワークフローを作成します。詳細については、「ワークフローを作成する」をご参照ください。
バッチ同期タスクを作成します。
次のいずれかの方法を使用して、バッチ同期タスクを作成できます。
方法 1: DataWorks コンソールにログインします。左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページで、バッチ同期タスクを作成するワークスペースを見つけ、[アクション] 列の [ショートカット] ドロップダウンリストから [データ開発] を選択します。 DataStudio ページの [スケジュール済みワークフロー] ペインで、作成したワークフローを見つけ、その名前をクリックします。 [data Integration] を右クリックし、
を選択します。方法 2: DataWorks コンソールにログインします。左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページで、バッチ同期タスクを作成するワークスペースを見つけ、[アクション] 列の [ショートカット] ドロップダウンリストから [データ開発] を選択します。 DataStudio ページの [スケジュール済みワークフロー] ペインで、作成したワークフローを見つけ、その名前をダブルクリックします。ワークフローの構成タブで、[ノードの作成] をクリックします。 [data Integration] セクションで、[オフライン同期] を右側のキャンバスにドラッグします。
[ノードの作成] ダイアログボックスで、パラメータを構成してバッチ同期タスクを作成します。
ネットワーク接続を確立する
ソース、宛先、および Data Integration 専用のリソースグループを選択し、リソースグループとデータソース間のネットワーク接続を確立します。
ネットワーク接続を確立できない場合は、プロンプトに従って、または関連トピックを参照して、ネットワーク接続を構成できます。詳細については、「ネットワーク接続ソリューション」をご参照ください。
ソースと宛先を構成する
ソースを構成する
ソースに関連するパラメータを構成します。この例では、EMR Hive データベースのデータを MaxCompute に同期するためのバッチ同期タスクが作成されます。次の表にパラメータを示します。
パラメータ | 説明 |
データソース | 追加した Hive データソース。 |
テーブル | データを同期する Hive テーブルを選択します。本番環境のデータソースのテーブルと開発環境のデータソースのテーブルは、同じスキーマである必要があります。 説明 開発環境の Hive データソースのテーブルとテーブルスキーマが表示されます。選択したテーブルのスキーマが本番環境のテーブルのスキーマと異なる場合、タスクを本番環境に送信した後に、テーブルまたは列が存在しないことを示すエラーが発生します。 |
Hive データソースのデータを読み取る方法 |
説明 HDFS ファイルに基づいてデータを読み取る場合、データ同期の効率が高くなります。 Hive JDBC を使用してデータを読み取る場合、MapReduce プログラムが生成されます。その結果、データ同期の効率が低下します。 HDFS ファイルに基づいてデータを読み取る場合、フィルタ条件を指定したり、ビューを読み取ったりすることはできません。ビジネス要件に基づいて同期方法を選択できます。 |
Parquet スキーマ | Hive テーブルを Parquet 形式で格納する場合は、parquet スキーマパラメータを構成する必要があります。 |
その他のパラメータについては、デフォルト値を保持します。
宛先を構成する
宛先に関連するパラメータを構成します。この例では、EMR Hive データベースのデータを MaxCompute に同期するためのバッチ同期タスクが作成されます。次の表にパラメータを示します。
パラメータ | 説明 |
データソース | 追加した MaxCompute データソース。 |
テーブル | データを書き込む MaxCompute テーブルの名前。 |
パーティションキー列 | パーティション情報。テーブルがパーティションテーブルの場合、このパラメータをパーティションキー列の値に設定できます。値は、 説明 パーティションキー列パラメータを構成する必要があるかどうか、およびシステムがパーティションキー列パラメータを表示する回数は、選択した宛先 MaxCompute テーブルのタイプによって異なります。パーティション化されていない宛先 MaxCompute テーブルを選択した場合、このパラメータを構成する必要はありません。パーティション化された宛先 MaxCompute テーブルを選択した場合、システムはテーブル内のパーティションキー列の数とパーティションキー列の名前に基づいてパーティションキー列パラメータを表示します。システムがパーティションキー列パラメータを表示する回数は、テーブル内のパーティションキー列の数と同じです。 |
その他のパラメータについては、デフォルト値を保持します。
フィールドマッピングを構成する
ソースと宛先を構成した後、ソースのフィールドと宛先のフィールド間のマッピングを構成する必要があります。 [同じ名前のフィールドをマッピング]、[同じ行のフィールドをマッピング]、[すべてのマッピングを削除]、または [自動レイアウト] をクリックして、関連する操作を実行できます。
チャネル制御ポリシーを構成する
最大並列スレッド数や許容されるダーティデータレコードの最大数などの設定を構成できます。
スケジューリングプロパティを構成する
[次へ] をクリックします。 [スケジューリング設定の構成] ステップで、同期タスクを実行するために必要なスケジューリングプロパティを構成します。スケジューリングパラメータの詳細については、「データ同期におけるスケジューリングパラメータの使用に関する説明」をご参照ください。
再実行プロパティを構成します。
ビジネス要件に基づいて再実行ポリシーを構成できます。タスクの再実行により、ネットワークのジッターなどの偶発的な問題によって発生するタスクの失敗を防ぐことができます。
スケジューリングの依存関係を構成します。
ビジネス要件に基づいてタスクのスケジューリングの依存関係を構成できます。現在のサイクルでバッチ同期タスクに対して生成されたインスタンスが、前のサイクルで同じタスクに対して生成されたインスタンスに依存するように構成できます。これにより、異なるスケジューリングサイクルでタスクに対して生成されたインスタンスが順番に実行を完了し、複数のインスタンスが同時に実行されないようにすることができます。
DataWorks は、スケジューリング用のリソースグループを使用して、Data Integration のバッチ同期タスクを Data Integration 用のリソースグループに発行し、Data Integration 用のリソースグループを使用してタスクを実行します。バッチ同期タスクをスケジュールするためにスケジューリング用のリソースグループを使用すると、料金が発生します。タスク発行メカニズムについては、「旧バージョンのリソースグループで実行されるタスクを発行するメカニズム」をご参照ください。
バッチ同期タスクをテストし、タスクを実行するためにコミットおよびデプロイする
バッチ同期タスクをテストする
バッチ同期タスクの構成タブの上部にあるツールバーで、[実行] または
[パラメータ付きで実行] をクリックしてバッチ同期タスクをテストし、タスクが期待どおりに実行できるかどうかを確認できます。 [パラメータ付きで実行] をクリックして、タスクに構成したスケジューリングパラメータが期待どおりに置き換えられるかどうかをテストできます。
バッチ同期タスクをコミットおよびデプロイする
バッチ同期タスクが期待どおりに実行された場合は、[保存] アイコンをクリックしてタスク構成を保存し、[コミット] アイコンをクリックしてタスクを本番環境にコミットできます。ワークスペースが標準モードの場合は、[デプロイ] アイコンをクリックしてタスクを本番環境にデプロイする必要があります。同期タスクは、日、時間、または分単位で Hive から MaxCompute テーブルにデータを書き込みます。詳細については、「タスクをデプロイする」をご参照ください。
バッチ同期タスクをデプロイした後、オペレーションセンターでタスクの実行結果を表示し、データのバックフィルなどのタスクに対する操作を実行できます。詳細については、「自動トリガーされたタスクで基本的な O&M 操作を実行する」をご参照ください。