DataWorks では、E-MapReduce (EMR) クラスター上に Hive、MapReduce (MR)、Presto、Spark SQL などのノードを作成して、タスクワークフローの設定、ジョブのスケジューリング、メタデータの管理を行うことができます。このトピックでは、同一または別の Alibaba Cloud アカウントに属する EMR クラスターを登録する方法について説明します。
背景情報
オープンソースのビッグデータ開発プラットフォームである E-MapReduce (EMR) は、Alibaba Cloud プラットフォーム上で実行されるビッグデータ処理ソリューションです。
オープンソースの Apache Hadoop と Apache Spark をベースに構築された EMR を使用すると、それらのエコシステム内の他のシステムを利用してデータを分析および処理できます。EMR は、Object Storage Service (OSS) や RDS などの他の Alibaba Cloud サービスとの間でデータを転送することもできます。Alibaba Cloud EMR は、on ECS、on ACK、サーバーレスなど、さまざまなユーザーニーズに対応するためにさまざまな形式で利用できます。
DataWorks で EMR タスクを実行する場合、さまざまな EMR コンポーネントから選択できます。最適な構成はコンポーネントによって異なります。EMR クラスターを構成する際は、「EMR クラスターの構成に関する推奨事項」をご参照のうえ、実際の要件に基づいて選択してください。
サポートされるクラスタータイプ
制限事項
-
権限:以下の ID を持つ RAM ユーザーまたは RAM ロールのみが EMR クラスターを登録できます。これらの権限を付与する方法については、「RAM ユーザーへの権限付与」をご参照ください。
-
Alibaba Cloud アカウント。
-
DataWorks の
Workspace Administrator roleとAliyunEMRFullAccessポリシーを持つ RAM ユーザーまたは RAM ロール。 -
AliyunDataWorksFullAccessとAliyunEMRFullAccessポリシーを持つ RAM ユーザーまたは RAM ロール。
-
-
リージョン:EMR Serverless Spark は、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深セン)、中国 (成都)、中国 (香港)、日本 (東京)、シンガポール、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、および米国 (バージニア) でのみ利用可能です。
-
タスクタイプ:DataWorks は EMR Flink タスクをサポートしていません。
-
タスクの実行:DataWorks は、サーバーレスリソースグループ (推奨) またはレガシーな専用スケジューリングリソースグループを使用した EMR タスクの実行をサポートしています。
-
データガバナンス:
-
EMR Hive、EMR Spark、および EMR Spark SQL ノード上の SQL タスクのみがデータリネージの生成をサポートしています。バージョン 5.9.1 または 3.43.1 以降のクラスターでは、これらのノードはテーブルレベルと列レベルの両方のデータリネージをサポートします。
説明Spark ノードでは、テーブルレベルおよび列レベルのデータリネージは、EMR クラスターのバージョン 5.8.0 または 3.42.0 以降でサポートされています。それ以前のバージョンでは、Spark 2.x のみがテーブルレベルのデータリネージをサポートします。
-
DataWorks で DataLake またはカスタムクラスターのメタデータを管理するには、まずクラスターに EMR-HOOK を設定する必要があります。EMR-HOOK が設定されていない場合、DataWorks はメタデータをリアルタイムで表示したり、監査ログを生成したり、データリネージを表示したりできません。現在、EMR-HOOK は EMR Hive および EMR Spark SQL サービスでのみサポートされています。詳細については、「Hive 用の EMR-HOOK の設定」および「Spark SQL 用の EMR-HOOK の設定」をご参照ください。
-
-
Kerberos 認証が有効になっている EMR クラスターの場合、リソースグループに関連付けられている vSwitch の CIDR ブロックからの UDP アクセスを許可するために、セキュリティグループにインバウンドルールを追加する必要があります。
説明EMR クラスターの Basic information タブで、[クラスターセキュリティグループ] の
アイコンをクリックします。 この操作により、[セキュリティグループ詳細] ページに移動します。 [アクセスルール] タブで [インバウンド] をクリックし、次に Added Manually をクリックします。 [プロトコルの種類] を [カスタム UDP] に設定します。 [ポート範囲] には、EMR クラスターの /etc/krb5.confファイルで指定されている KDC ポートを入力します。 Authorized object を、リソースグループに関連付けられている vSwitch の CIDR ブロックに設定します。
注意事項
-
標準モードの DataWorks ワークスペースで開発環境と本番環境を分離するには、2 つの別々の EMR クラスターを登録する必要があります。1 つは開発環境用、もう 1 つは本番環境用です。これらのクラスターのメタデータは、以下のいずれかの方法で保存する必要があります:
-
方法 1 (データレイクソリューションに推奨):メタデータを Data Lake Formation (DLF) の 2 つの異なるカタログに保存します。詳細については、「メタデータストレージタイプの切り替え」をご参照ください。
-
方法 2:メタデータを RDS の 2 つの異なるデータベースに保存します。詳細については、「自己管理型 RDS インスタンスの設定」をご参照ください。
-
-
1 つの EMR クラスターは、同一の Alibaba Cloud アカウント内の複数のワークスペースに登録できますが、異なるアカウント間では登録できません。
-
DataWorks リソースグループが EMR クラスターにアクセスできるようにするため、リソースグループを EMR クラスターと同じ VPC および vSwitch にバインドしても接続できない場合は、クラスターのセキュリティグループルールを確認してください。vSwitch の CIDR ブロックと一般的なオープンソースコンポーネントのポートに対するインバウンドルールを追加します。詳細については、「EMR クラスターのセキュリティグループの管理」をご参照ください。
ステップ 1:クラスター登録ページへの移動
DataWorks コンソールにログインします。対象のリージョンで、左側のナビゲーションウィンドウから をクリックします。ドロップダウンリストからワークスペースを選択し、入力 管理センター をクリックします。
-
左側のナビゲーションウィンドウで、クラスター管理 をクリックして クラスター管理 ページを開きます。クラスターの登録 をクリックし、クラスタータイプの登録 を E-MapReduce に設定します。E-MapReduceクラスターの登録 ページが表示されます。
ステップ 2:EMR クラスターの登録
E-MapReduceクラスターの登録 ページで、クラスター情報を設定します。
標準モードのワークスペースでは、開発環境と本番環境でクラスター情報を個別に設定する必要があります。ワークスペースモードの詳細については、「ワークスペースモードの違い」をご参照ください。
-
クラスターの表示名:クラスターの一意の表示名を入力します。
-
クラスターが属する Alibaba Cloud アカウント:EMR クラスターを所有するアカウントを選択します。
説明EMR Serverless Spark クラスターは、アカウントをまたいで登録できません。
選択したアカウントタイプに基づいてパラメーターを設定します。
現在のアカウント
クラスターが Current Alibaba Cloud Account に属している場合、次のパラメーターを設定する必要があります。
|
パラメーター |
説明 |
|
Cluster Type |
登録する EMR クラスターのタイプを選択します。サポートされているクラスタータイプの一覧については、「制限事項」をご参照ください。 |
|
Cluster |
現在のアカウントで DataWorks に登録したい EMR クラスターを選択します。 説明
EMR Serverless Spark を選択した場合は、画面の指示に従い、説明を参照して、E-MapReduceワークスペース (登録するクラスター)、デフォルトのエンジンバージョン、およびデフォルトのリソースキューを選択する必要があります。 |
|
Default Access Identity |
現在のワークスペースで EMR クラスターにアクセスするために使用する ID を指定します。
説明
クラスターアカウントにマッピングされた ID (タスク所有者、Alibaba Cloud アカウント、RAM ユーザーなど) を選択した場合、DataWorks メンバーと指定された EMR クラスターアカウント間のマッピングを手動で設定できます。詳細については、「クラスター ID マッピングの設定」をご参照ください。マッピングが必要なアクセス ID を使用して DataWorks で EMR タスクを実行する際に、特定のマッピングが設定されていない場合、DataWorks は以下のポリシーを適用します:
|
|
プロキシユーザー情報を渡す |
プロキシユーザー情報を渡すかどうかを指定します。 説明
LDAP や Kerberos などの認証方式が有効になっている場合、クラスターは各ユーザーに認証情報を発行します。権限管理を一元化するために、スーパーユーザー (実ユーザー) が一般ユーザー (プロキシユーザー) の代理として認証を行うことができます。プロキシユーザーがクラスターにアクセスする際、スーパーユーザーの認証情報が使用されます。ユーザーをプロキシユーザーとして追加するだけで済みます。
プロキシユーザー情報は、EMR タスクの種類に応じて以下の方法で渡されます:
|
|
プロフィール |
クラスタータイプで HADOOP を選択した場合、[EMR コンソール] から設定ファイルを取得できます。 詳細については、「サービス設定のエクスポートとインポート」をご参照ください。 ファイルをエクスポートした後、UI 上で必要に応じて名前を変更します。 クラスター詳細ページの [基本情報] タブで、右上隅の [すべての操作] をクリックします。ドロップダウンメニューの [クラスターサービス] セクションで、[サービス設定のエクスポート] を選択します。 また、EMR クラスターにログインして、以下のパスから設定ファイルを取得することもできます:
|
別のアカウント
クラスターが Another Alibaba Cloud Account に属する場合、次のパラメーターを設定する必要があります。
|
パラメーター |
説明 |
|
Alibaba CloudプライマリアカウントUID |
EMR クラスターを所有する Alibaba Cloud アカウントの UID を入力します。 |
|
RAMロールの反対側 |
EMR クラスターへのアクセスに使用する RAM ロールです。このロールは以下の要件を満たす必要があります:
説明
別のアカウントに属する EMR クラスターを登録する方法の詳細については、「シナリオ:別のアカウントに属する EMR クラスターの登録」をご参照ください。 |
|
ピアEMRクラスタータイプ |
登録する EMR クラスターのタイプを選択します。クロスアカウント登録では、 |
|
ピアEMRクラスター |
そのアカウントで DataWorks に登録したい EMR クラスターを選択します。 |
|
プロフィール |
UI のプロンプトに従って各設定ファイルを設定します。設定ファイルの取得方法の詳細については、「サービス設定のエクスポートとインポート」をご参照ください。ファイルをエクスポートした後、UI 上で必要に応じて名前を変更します。 クラスター詳細ページの [基本情報] タブで、右上隅の [すべての操作] をクリックします。ドロップダウンメニューの [クラスターサービス] セクションで、[サービス設定のエクスポート] を選択します。 また、EMR クラスターにログインして、以下のパスから設定ファイルを取得することもできます:
|
|
Default Access Identity |
現在のワークスペースで EMR クラスターにアクセスするために使用する ID を指定します。
説明
クラスターアカウントにマッピングされた ID (タスク所有者、Alibaba Cloud アカウント、RAM ユーザーなど) を選択した場合、DataWorks メンバーと指定された EMR クラスターアカウント間のマッピングを手動で設定できます。詳細については、「クラスター ID マッピングの設定」をご参照ください。マッピングが必要なアクセス ID を使用して DataWorks で EMR タスクを実行する際に、特定のマッピングが設定されていない場合、DataWorks は以下のポリシーを適用します:
|
|
プロキシユーザー情報を渡す |
プロキシユーザー情報を渡すかどうかを指定します。 説明
LDAP や Kerberos などの認証方式が有効になっている場合、クラスターは各ユーザーに認証情報を発行します。権限管理を一元化するために、スーパーユーザー (実ユーザー) が一般ユーザー (プロキシユーザー) の代理として認証を行うことができます。プロキシユーザーがクラスターにアクセスする際、スーパーユーザーの認証情報が使用されます。ユーザーをプロキシユーザーとして追加するだけで済みます。
プロキシユーザー情報は、EMR タスクの種類に応じて以下の方法で渡されます:
|
ステップ 3:リソースグループの初期化
初めてクラスターを登録した後、クラスターのサービス設定を変更した後、またはコンポーネントのバージョンをアップグレードした後 (例:core-site.xml の変更) には、リソースグループを初期化する必要があります。これにより、リソースグループが EMR にアクセスでき、EMR タスクが現在の環境構成で実行できるようになります。
-
オープンソースクラスター ページで、登録済みの EMR クラスターのタブを選択し、リソースグループの初期化 をクリックします。
-
必要なリソースグループを見つけ、[操作] 列の [初期化] をクリックします。
サーバーレスリソースグループまたはレガシーな専用スケジューリングリソースグループを初期化できます。
-
初期化が完了するまで 1〜2 分待ってから、[OK] をクリックします。
-
初期化が失敗した場合は、接続性診断ツールを使用して原因をトラブルシューティングしてください。
-
初期化により、実行中のタスクが失敗する可能性があります。設定変更後に広範囲なタスクの失敗を防ぐなど、即時の再初期化が必要な場合を除き、オフピーク時間中にリソースグループを初期化することを推奨します。
次のステップ
-
データ開発:「データ開発ワークフローガイド」に従って、コンポーネント環境を設定します。
-
クラスター ID マッピングの設定:EMR クラスターのデフォルトのアクセス ID が
hadoopアカウントでない場合、権限管理のために RAM ユーザーが DataWorks でアクセスできるリソースを制御するために ID マッピングを設定する必要があります。 -
グローバル YARN リソースキューの設定:YARN リソースキューマッピングを使用して、各モジュールが使用する YARN キューを指定します。これらの設定を構成して、個々のモジュール設定をオーバーライドすることもできます。
-
グローバル Spark パラメーターの設定:公式 Spark ドキュメントに基づいて、グローバル Spark パラメーターをカスタマイズします。また、同じ名前のパラメーターについて、ワークスペースレベルの設定がモジュール固有の設定をオーバーライドするかどうかを指定することもできます。
-
Kyuubi 接続情報の設定:Kyuubi タスクにカスタムのアカウントとパスワードを使用するには、このトピックで説明されているように接続情報をカスタマイズします。