

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# EKS での Amazon EMR とは
<a name="emr-eks"></a>

Amazon EMR on EKS には、Amazon Elastic Kubernetes Service (Amazon EKS) でオープンソースのビッグデータフレームワークを実行できる Amazon EMR のデプロイオプションが用意されています。Amazon EMR on EKS ではオープンソースアプリケーションのコンテナが自動的に構築、設定、管理されるため、ユーザーは分析ワークロードの実行に集中できます。

Amazon EMR を既に使用しているユーザーは、Amazon EMR ベースのアプリケーションを他のタイプのアプリケーションと共に同じ Amazon EKS クラスター上で実行できるようになります。さらに、このデプロイオプションを使用するとリソース使用率が向上し、複数のアベイラビリティーゾーンにわたるインフラストラクチャ管理が簡素化されます。Amazon EKS でビッグデータフレームワークを既に実行している場合は、Amazon EMR を使用してプロビジョニングと管理を自動化し、Apache Spark をより迅速に実行できるようになります。

Amazon EMR on EKS を使用すると、チームはより効率的にコラボレーションでき、大量のデータをより簡単かつ費用対効果の高い方法で処理できます。
+ インフラストラクチャをプロビジョニングしなくても、共通のリソースプールでアプリケーションを実行できます。[Amazon EMR Studio](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio.html) と AWS SDK または AWS CLI を使用して、EKS クラスターで実行されている分析アプリケーションを開発、送信、診断できます。Amazon EMR on EKS でスケジュールされたジョブは、セルフマネージドの Apache Airflow またはAmazon Managed Workflows for Apache Airflow (MWAA) を使用して実行できます。
+ インフラストラクチャチームは、共通のコンピューティングプラットフォームを一元管理して、Amazon EMR ワークロードを他のコンテナベースのアプリケーションと統合できます。一般的な Amazon EKS ツールを使用してインフラストラクチャ管理を簡素化し、さまざまなバージョンのオープンソースフレームワークを必要とするワークロードに共有クラスターを利用できます。さらに、Kubernetes クラスターの管理と OS のパッチ適用が自動化されるため、運用上のオーバーヘッドを削減できます。Amazon EC2 と を使用すると AWS Fargate、複数のコンピューティングリソースを有効にして、パフォーマンス、運用、または財務の要件を満たすことができます。

次の図は、Amazon EMR の 2 つの異なるデプロイモデルを示しています。

![\[Amazon EMR のデプロイオプション\]](http://docs.aws.amazon.com/ja_jp/emr/latest/EMR-on-EKS-DevelopmentGuide/images/emr-on-eks-deployment.png)


**Topics**
+ [Amazon EMR on EKS のアーキテクチャ](emr-eks-overview.md)
+ [Amazon EMR on EKS の概念と用語の理解](emr-eks-concepts.md)
+ [Amazon EMR on EKS 仮想クラスターに作業を送信するとどうなるか](emr-eks-how.md)

# Amazon EMR on EKS のアーキテクチャ
<a name="emr-eks-overview"></a>

Amazon EMR on EKS では、アプリケーションとそれが実行されるインフラストラクチャが疎結合されます。各インフラストラクチャレイヤーで、後続レイヤーのオーケストレーションが提供されます。ユーザーが Amazon EMR にジョブを送信する際のジョブ定義には、アプリケーション固有のパラメータがすべて含まれます。Amazon EMR はこれらのパラメータを使用して、デプロイするポッドとコンテナを Amazon EKS に指示します。その後、Amazon EKS は Amazon EC2 からコンピューティングリソースをオンラインにし、ジョブの実行に AWS Fargate 必要です。

このようなサービスの疎結合により、安全に分離された複数のジョブを同時に実行できます。また、異なるコンピューティングバックエンドで同じジョブをベンチマークしたり、複数のアベイラビリティーゾーンにジョブを分散して可用性を向上させたりすることもできます。

次の図は、Amazon EMR on EKS が他の AWS サービスとどのように連携するかを示しています。

![\[Amazon EMR on EKS アーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/emr/latest/EMR-on-EKS-DevelopmentGuide/images/emr-on-eks-architecture.png)


# Amazon EMR on EKS の概念と用語の理解
<a name="emr-eks-concepts"></a>

Amazon EMR on EKS には、Amazon Elastic Kubernetes Service (Amazon EKS) でオープンソースのビッグデータフレームワークを実行できる Amazon EMR のデプロイオプションが用意されています。このトピックでは、処理のために送信する作業単位である名前空間、仮想クラスター、ジョブ実行など、一般的な用語の一部に関するコンテキストについて説明します。

## Kubernetes 名前空間
<a name="emr-eks-concepts-namespace"></a>

Amazon EKS では、クラスターリソースを複数のユーザーとアプリケーションに分割するために Kubernetes 名前空間が使用されます。これらの名前空間はマルチテナント環境の基盤です。Kubernetes 名前空間は、Amazon EC2 またはコンピューティングプロバイダー AWS Fargate として使用できます。この柔軟性により、ジョブを実行する際のパフォーマンスやコストについてさまざまなオプションを選択できます。

## 仮想クラスター
<a name="emr-eks-concepts-virtual-cluster"></a>

仮想クラスターとは、Amazon EMR が登録されている Kubernetes 名前空間です。Amazon EMR では、仮想クラスターを使用してジョブを実行し、エンドポイントをホストします。複数の仮想クラスターを同じ物理クラスターでバックアップできますが、各仮想クラスターは EKS クラスター上の 1 つの名前空間にマッピングされます。仮想クラスターでは、請求に適用されるアクティブなリソースや、サービスの外部でライフサイクル管理を必要とするアクティブなリソースは作成されません。

## ジョブ実行
<a name="emr-eks-concepts-job-run"></a>

ジョブ実行とは、Amazon EMR on EKS に送信する Spark jar、PySpark スクリプト、SparkSQL クエリなどの作業単位です。1 つのジョブに複数のジョブ実行を設定できます。ジョブ実行の送信時には、次の情報を含めます。
+ ジョブを実行する仮想クラスター。
+ ジョブを識別するジョブ名。
+ 実行ロール。これはジョブを実行するスコープ付き IAM ロールで、ジョブからアクセスできるリソースを指定できます。
+ Amazon EMR リリースラベル。使用するオープンソースアプリケーションのバージョンを指定します。
+ ジョブの送信時に使用するアーティファクト (spark-submit パラメータなど)。

デフォルトでは、ログは Spark 履歴サーバーにアップロードされ、 AWS マネジメントコンソールからアクセス可能です。イベントログ、実行ログ、メトリクスを、Amazon S3 と Amazon CloudWatch にプッシュすることもできます。

## Amazon EMR コンテナ
<a name="emr-eks-concepts-containers"></a>

Amazon EMR コンテナとは、[Amazon EMR on EKS の API 名です](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/Welcome.html)。次のシナリオで `emr-containers` プレフィックスを使用します。
+ Amazon EMR on EKS の CLI コマンドのプレフィックスです。例えば、`aws emr-containers start-job-run`。
+ Amazon EMR on EKS の IAM ポリシーアクションの前に使用するプレフィックスです。例えば、`"Action": [ "emr-containers:StartJobRun"]`。詳細については、[Amazon EMR on EKS でのポリシーアクション](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-actions)を参照してください。
+ Amazon EMR on EKS サービスエンドポイントで使用するプレフィックスです。例えば、`emr-containers.us-east-1.amazonaws.com`。詳細については、「[Amazon EMR on EKS サービスエンドポイント](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/service-quotas.html#service-endpoints)」を参照してください。

# Amazon EMR on EKS 仮想クラスターに作業を送信するとどうなるか
<a name="emr-eks-how"></a>

Amazon EMR を Amazon EKS 上の Kubernetes 名前空間に登録すると、仮想クラスターが作成されます。これで、Amazon EMR はその名前空間で分析ワークロードを実行できるようになります。ユーザーが Amazon EMR on EKS を使って Spark ジョブを仮想クラスターに送信すると、Amazon EMR on EKS は Amazon EKS 上の Kubernetes スケジューラにポッドのスケジュールをリクエストします。

次の手順と図は、Amazon EMR on EKS のワークフローを示しています。
+ 既存の Amazon EKS クラスターを使用するか、[eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) コマンドラインユーティリティまたは Amazon EKS コンソールを使用してクラスターを作成します。
+ Amazon EMR を EKS クラスター上の名前空間に登録して、仮想クラスターを作成します。
+  AWS CLI または SDK を使用して、ジョブを仮想クラスターに送信します。

![\[Amazon EMR on EKS ジョブ\]](http://docs.aws.amazon.com/ja_jp/emr/latest/EMR-on-EKS-DevelopmentGuide/images/emr-on-eks-jobs.png)


Amazon EMR on EKS は、ユーザーが実行するジョブごとに、Amazon Linux 2 ベースイメージ、Apache Spark、および関連する依存関係を持つコンテナを作成します。各ジョブはポッドで実行され、コンテナがダウンロードされて実行が開始されます。ポッドはジョブの終了後に終了します。コンテナのイメージが既にノードにデプロイされている場合は、キャッシュされたイメージが使用されてダウンロードがバイパスされます。ログフォワーダーやメトリクスフォワーダーなどのサイドカーコンテナをポッドにデプロイできます。ジョブが終了した後でも、Amazon EMR コンソールの Spark アプリケーション UI を使用してジョブをデバッグできます。