ゲートウェイは、主にコンピューティングクラスターにジョブを送信し、セキュリティ分離を提供するために使用されます。ゲートウェイ環境のデプロイを簡素化するために、E-MapReduce (EMR) は EMR-CLI というツールを提供しています。このツールは、Alibaba Cloud Elastic Compute Service (ECS) を使用してインスタンスを作成し、ゲートウェイ環境をデプロイします。DataLake、Dataflow、または OLAP クラスターがある場合は、このトピックを参照してゲートウェイ環境をデプロイしてください。
3つのゲートウェイデプロイメントモードと選択ガイド
ゲートウェイは EMR のジョブ送信隔離レイヤーであり、以下の主要な利点を提供します:
クライアントワークロードとクラスターのコアサービスの分離
spark-submit、hive -f、yarn applicationなどのクライアント操作を、マスターノードやリソースマネージャーノードから分離します。マルチテナント環境の隔離の実装
異なるユーザーや部門向けに独立したランタイム環境を構成できます。
クラスターの安定性と保守性の向上
高頻度の送信、スクリプトのデバッグ、環境の競合、リソース競合などの問題が、YARN ResourceManager や Hadoop 分散ファイルシステム (HDFS) NameNode などの主要なサービスに影響を与えるのを防ぎます。
EMR は3つのゲートウェイモードを提供します。各モードは、異なるクラスタータイプ、バージョン、およびアーキテクチャ要件に適しています。
タイプ | サポートされるクラスタータイプとバージョン要件 | デプロイメント方法と主な特徴 | シナリオと推奨事項 |
ゲートウェイノードグループ | 以下のクラスターのみがサポートされます:
| • 既存のクラスターにノードグループを直接追加します。詳細については、「ノードグループの管理」をご参照ください。 | 推奨:既存の DataLake または DataFlow クラスターに、安全で隔離された送信エントリポイントを迅速に追加するのに最適です。このオプションは、O&M コストが最も低く、高い構成の一貫性を保証します。 |
ゲートウェイ環境 | DataLake、DataFlow、カスタム、および OLAP クラスターをサポートします | • ECS インスタンスに手動でデプロイします。詳細については、「EMR コマンドラインインターフェイス (CLI) を使用したゲートウェイ環境デプロイメントのカスタマイズ」をご参照ください。 | クラスターがゲートウェイノードグループをサポートしていない場合の標準的な代替手段です。 |
ゲートウェイクラスター | Hadoop および Kafka クラスターのみをサポートします |
| Hadoop および Kafka クラスターに適しています。 |
前提条件
DataLake、Dataflow、OLAP、または Custom シナリオ向けの EMR コンピューティングクラスターが実行されている必要があります。クラスターの作成手順については、「クラスターの作成」をご参照ください。
制限事項
-
クラスタータイプ:このソリューションは、DataLake、Dataflow、OLAP、および Custom クラスターのゲートウェイ環境のデプロイにのみ適用されます。クラスターのタイプとバージョンに互換性がある場合は、ゲートウェイノードグループの使用を推奨します。
既存の Hadoop および Kafka クラスターのゲートウェイ環境のデプロイについては、「ゲートウェイクラスターの作成」をご参照ください。
説明Hadoop または Kafka クラスターを作成できるのは、ご利用の Alibaba Cloud アカウントが 2022 年 12 月 19 日 17:00 (UTC+8) より前にこれらのクラスターを作成した場合に限られます。この日時より前にこれらのクラスタータイプを作成していないアカウントでは、作成できなくなります。
-
上書きインストール:EMR-CLI は、ゲートウェイクライアントを上書きモードでデプロイします。既存のゲートウェイがある ECS インスタンスに再デプロイすると、古いクライアントが上書きされ、新しいクライアントが同じディレクトリにインストールされます。
-
分離デプロイ:EMR クラスターの既存の ECS インスタンス (マスターノード、コアノード、タスクノードなど) をゲートウェイノードとして使用しないでください。これにより、クライアント環境がクラスターの正常な運用に干渉するのを防ぎます。
-
サポートされるサービス:このデプロイ方法では、HDFS、YARN、HBase、Hive、Spark 2、Spark 3、JindoSDK、Flink、Sqoop、Impala、Presto、Hudi、Iceberg、Tez、Delta Lake の各サービスクライアントをサポートしています。
初回デプロイ
-
ECS コンソールで、インスタンスを作成します。詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
説明ECS インスタンスはパブリックネットワークへのアクセスは不要です。
以下のパラメーター設定を推奨します。
パラメーター
説明
リージョンとゾーン
EMR クラスターと同じリージョンおよびゾーン。
イメージ
EMR クラスターのインスタンスと同じオペレーティングシステム。
システムディスク
60 GB 以上の ESSD を推奨します。
ネットワーク
EMR クラスターと同じ Virtual Private Cloud (VPC)。
セキュリティグループ
EMR クラスターのマスターノードグループと同じセキュリティグループを使用します。これにより、ECS インスタンスと EMR クラスター間のネットワーク接続が確保されます。
-
EMR ゲートウェイ専用の ECS RAM ロールを作成します。
-
RAM 管理者として RAM コンソールにログインします。
-
左側ナビゲーションウィンドウで、 を選択します。
-
Role ページで、Create Role をクリックします。
-
Create Role パネルで、[Principal Type] に [Cloud Service] を、[Principal Name] に ECS を設定し、[OK] をクリックします。
-
Role Name (例:ECSForEMRGatewayRole) を入力し、OK をクリックします。
-
-
RAM ロールに権限を付与します。
-
Permission Settings タブで、Add Authorization をクリックします。
-
Add Authorization パネルで、システムポリシー を選択します。AliyunEMRFullAccess、AliyunOSSFullAccess、および AliyunDLFFullAccess を検索して選択し、[OK] をクリックします。
-
無効 をクリックします。
-
-
RAM ロールを ECS インスタンスにアタッチします。
ECS コンソールにログインします。
-
左側ナビゲーションウィンドウで、 を選択します。
-
上部メニューで、リージョンを選択します。
-
新しく作成した ECS インスタンスを見つけ、 を選択します。
-
表示されるダイアログボックスで、[ECSForEMRGatewayRole] ロールを選択し、OK をクリックします。
-
ECS インスタンスに接続します。詳細については、「インスタンスへの接続」をご参照ください。
-
次のコマンドを実行して EMR-CLI をインストールします。
regionId=`curl http://100.100.100.200/latest/meta-data/region-id`; curl https://ecm-repo-${regionId}.oss-${regionId}-internal.aliyuncs.com/emrcli/emrcli.sh -o /tmp/emrcli.sh; chmod 755 /tmp/emrcli.sh; sh /tmp/emrcli.sh install ${regionId}インストールが成功すると、次のメッセージが表示されます:
install emrcli success -
次のコマンドを実行して EMR ゲートウェイクライアントをデプロイします。
emrcli gateway deploy \ --clusterId <ClusterId> \ --appNames <ApplicationName>次のパラメーターを実際の値に置き換えてください。
パラメーター
必須
説明
clusterId
はい
EMR クラスターの ID。
appNames
いいえ
アプリケーション名。複数のアプリケーションを指定するには、名前をカンマ (,) で区切ります (例:
HDFS,YARN)。このパラメーターを省略すると、クラスター内のサポートされているすべてのアプリケーション (Hive や HDFS など) のクライアントがデフォルトでインストールされます。
デプロイが成功すると、次のメッセージが表示されます:
deployGateway success重要ゲートウェイがインストールされると、
JAVA_HOMEシステム環境変数は/usr/lib/jvm/java-1.8.0に設定されます。この設定は /etc/profile.d/emr_env.sh ファイルで変更できますが、ゲートウェイの機能に影響を与える可能性があるため、注意して実行してください。 -
ECS インスタンスに再度ログインして新しい環境変数を適用します。
-
オプション:ゲートウェイノードの DNS 名前解決を設定します。
重要この手順は、ゲートウェイに Spark サービスが含まれている場合に必要です。
-
ゾーンを追加します。詳細については、「組み込みの権威ゾーンの追加」をご参照ください。
-
DNS レコードを追加します。詳細については、「DNS レコードの追加」をご参照ください。
次の表に、必要なパラメーターを示します。
パラメーター
説明
[レコードタイプ]
デフォルト値の [A] を使用します。
[ホストレコード]
ゲートウェイノードのホスト名 (例:iZ2zea8r0aht2vzbqci****) を入力します。
ホスト名は、
hostnameコマンドを実行して取得できます。[レコード値]
ゲートウェイノードの内部 IP アドレスを入力します。
このアドレスは、ノード管理ページで確認できます。
[TTL 値]
デフォルト値を使用します。
-
ゲートウェイ管理
ゲートウェイを作成した後、関連付けられたクラスターに新しいサービスを追加したり、サービス設定を変更したりした場合、コマンドを実行してクライアントコンポーネントを更新したり、最新の設定を同期したりできます。
クライアントコンポーネントの更新
EMR クラスターに Flink などの新しいサービスを追加した場合、対応するクライアントをゲートウェイノードに増分インストールできます。deploy コマンドは、既存のアプリケーションの設定を上書きし、新しいアプリケーションを増分インストールします。
# 例:既存の HDFS と YARN のセットアップに FLINK クライアントを追加
emrcli gateway deploy \
--clusterId <ClusterId> \
--appNames HDFS,YARN,FLINK
更新が成功すると、次のメッセージが表示されます:
deployGateway success
設定の同期
EMR クラスターでサービス設定を変更した場合 (EMR コンソールで core-site.xml を変更した場合など)、新しい設定をゲートウェイノードに手動で同期する必要があります。
設定を同期すると、ゲートウェイ上の既存の設定が上書きされます。同期は慎重に行ってください。
# 同期コマンドの実行
emrcli gateway refreshConfigs \
--clusterId <ClusterId> \
--appNames <ApplicationName> # オプション。同期するアプリケーションを指定します。
同期が成功すると、次のメッセージが表示されます:
refreshConfiguration success
EMR-CLI の管理
EMR-CLI バージョンの表示
次のコマンドを実行して EMR-CLI のバージョンを確認します。
emrcli version
このコマンドは、次のような情報を返します:
2.0.0
EMR-CLI のアップグレード
最新バージョンにアップグレードするには、「初回デプロイ」の EMR-CLI のインストール手順を再実行してください。
よくある質問
Q:コンピューティングクラスターを切り替えるにはどうすればよいですか。
A:コンピューティングクラスターを切り替えるには、次の手順に従ってください:
-
データ損失を防ぐため、
mvコマンドを使用して、古いクラスターから/opt/appsディレクトリ、/etc/taihao-appsディレクトリ、/etc/profile.d/emr_env.shファイル、および/etc/profile.d/yarn.shファイルを手動でバックアップしてください。 -
このトピックの手順に従って、新しいクラスターのゲートウェイ環境を再デプロイしてください。
> インスタンスの設定 > RAM ロールのアタッチ/デタッチ