RAM ロールを使用して、別の Alibaba Cloud アカウントの EMR クラスターを DataWorks にバインドできます。このトピックでは、アカウント A がアカウント B の EMR クラスターをバインドして、EMR データへのクロスアカウントアクセスを許可する方法について説明します。
前提条件
制限事項
-
クロスアカウントバインドは、DLF を使用してメタデータを管理しない Hadoop クラスターでのみサポートされています。
-
Kerberos 認証はサポートされていません。
-
Spark SQL タスクでは、テーブルリネージのみがサポートされています。フィールドリネージはサポートされていません。
アカウント B:RAM ロールの作成と権限付与
アカウント B で、アカウント A がロールを引き受けることを許可する信頼ポリシーが設定された RAM ロールを作成します。これにより、アカウント A はアカウント B の EMR リソースにアクセスできるようになります。
-
RAM ロールを作成します。
アカウント B で RAM コンソール にログインし、RAM ロールを作成します。アカウント A を信頼されたアカウントとして指定し、ロールを引き受けて承認されたリソースにアクセスできるようにします。詳細な手順については、「信頼できる Alibaba Cloud アカウント用の RAM ロールの作成」をご参照ください。
主なパラメータの設定は次のとおりです:
-
[RAM ロール名]:EMRRole を入力します。
-
[信頼できる Alibaba Cloud アカウントの選択]:[その他の Alibaba Cloud アカウント] を選択します。アカウント ID フィールドに、アカウント A の ID を入力します。ID を確認するには、アカウント A でコンソールにログインし、上部メニューのプロフィールアバターにカーソルを合わせます。
設定が完了すると、アカウント A は [EMRRole] ロールを引き受けて、承認されたリソースにアクセスできるようになります。
-
-
信頼ポリシーを変更します。
[EMRRole] ロールの詳細ページで、信頼ポリシーを更新して、アカウント A にアカウント B の EMR クラスターへのアクセスを許可します。詳細については、「RAM ロールの信頼ポリシーの変更」をご参照ください。次のポリシーを使用します:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<UID of Account A>@emr.dataworks.aliyuncs.com" ] } } ], "Version": "1" }説明<UID of Account A>を Alibaba Cloud アカウント A の UID に置き換えてください。 -
AliyunDataWorksAccessingEMRReadOnlyPolicy 権限を EMRRole ロールに付与します。
RAM コンソールで、EMRRole ロールの詳細ページに移動します。[権限] タブで、[権限の付与] をクリックします。AliyunDataWorksAccessingEMRReadOnlyPolicy ポリシーを検索して選択し、[OK] をクリックします。
アカウント A:クロスアカウントクラスターの登録
この手順では、アカウント B の EMR クラスターをアカウント A の DataWorks ワークスペースにバインドします。開始する前に、アカウント B の UID を取得する必要があります。
[Management Center] ページに移動します。
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、[Management Center] をクリックします。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[管理センターに移動] をクリックします。
SettingCenter ページの左側のナビゲーションウィンドウで、[計算リソース]をクリックします。
-
クラスター情報を設定します。
-
基本情報を設定します。
標準モードのワークスペースでは、開発環境と本番環境のコンピューティングリソースを個別にバインドする必要があります。画面の指示に従ってクラスターを設定します。ワークスペースモードの詳細については、「ワークスペースモード間の違い」をご参照ください。
[クラスターのクラウドアカウント] で、[その他の Alibaba Cloud アカウント] を選択します。7 つの設定ファイル (
core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、hive-site.xml、spark-defaults.conf、spark-env.sh) をアップロードします。[デフォルトアクセスアイデンティティ] と [プロキシユーザー情報を渡す] を設定します。[コンピューティングリソースインスタンス名] と [説明] を入力し、[OK] をクリックします。主なパラメータの説明は次のとおりです:
-
[その他のアカウントの UID]:EMR クラスターを所有するアカウント B の UID を入力します。UID はアカウント B の所有者から取得する必要があります。
-
[その他のアカウントの RAM ロール]:アカウント B で作成した RAM ロールの名前を入力します。この例では、名前は EMRRole です。
-
[その他のアカウントの EMR クラスター]:DataWorks にバインドする EMR クラスターを選択します。DLF を使用してメタデータを管理しない、バージョン 3.38.3 または 3.38.2 の Hadoop クラスターのみを選択できます。
クラスターのバインド方法の詳細については、「DataStudio:EMR コンピューティングリソースのバインド」をご参照ください。
-
-
リソースグループの初期化
EMR コンピューティングリソースを初めてバインドするとき、クラスターサービス設定を変更するとき、または コンポーネントをアップグレードするとき (例:
core-site.xmlの変更) にリソースグループを初期化します。このプロセスにより、ネットワーク接続を設定 した後、リソースグループが EMR クラスターにアクセスできるようになります。重要初期化に失敗した場合は、接続性診断ツールを使用して原因のトラブルシューティングを行ってください。
リソースグループを初期化すると、実行中のタスクが失敗する可能性があります。リソースグループを直ちに再初期化する必要がある場合 (たとえば、クラスター設定の変更後に多くのタスクが失敗するのを防ぐため) を除き、オフピーク時にリソースグループを初期化することをお勧めします。
-
次のステップ
DataWorks にクラスターを登録した後、次の操作を実行できます。
-
クラスター ID マッピングの設定:EMR クラスターのデフォルトアクセスアイデンティティが Hadoop アカウントでない場合は、クラスター ID マッピングを設定します。これにより、RAM ユーザーが承認されていない DataWorks リソースにアクセスすることを防ぎます。
-
Data Integration を使用して、クラスター上でデータ同期タスクを実行します。詳細については、「Data Integration」をご参照ください。
-
オペレーションセンターとデータマップに移動して、クラスターの詳細を表示します。詳細については、「オペレーションセンター」と「データマップ」をご参照ください。