

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 什麼是 Amazon EMR on EKS？
<a name="emr-eks"></a>

Amazon EMR on EKS 為 Amazon EMR 提供了一個部署選項，可讓您在 Amazon Elastic Kubernetes Service (Amazon EKS) 上執行開放原始碼大數據框架。使用此部署選項，您可以專注於執行分析工作負載，同時 Amazon EMR on EKS 可為開放原始碼應用程式建置、設定和管理容器。

如果您已經使用 Amazon EMR，現在可以在相同的 Amazon EKS 叢集上執行 Amazon EMR 型應用程式和其他類型的應用程式。此部署選項還可改善資源使用率，並簡化多個可用區域的基礎設施管理。如果已經在 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 叢集上執行的分析應用程式。可以使用自我管理的 Apache Airflow 或 Amazon Managed Workflows for Apache Airflow (MWAA)，在 Amazon EMR 上執行排程作業。
+ 基礎設施團隊可以集中管理通用運算平台，將 Amazon EMR 工作負載與其他容器型應用程式合併。可以使用常用的 Amazon EKS 工具簡化基礎設施管理，並利用共用叢集來處理需要不同版本開放原始碼框架的工作負載。也可以透過自動化 Kubernetes 叢集管理和作業系統修補來減少營運成本。透過 Amazon EC2 和 AWS Fargate，您可以啟用多個運算資源，以滿足效能、營運或財務需求。

下圖表示 Amazon EMR 的兩種不同部署模型。

![\[Amazon EMR 部署選項\]](http://docs.aws.amazon.com/zh_tw/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 要部署哪些 Pod 和容器。然後，Amazon EKS 將來自 Amazon EC2 的運算資源帶入線上，並且 AWS Fargate 需要這些資源才能執行任務。

透過這種鬆散的服務耦合，可以同時執行多個安全隔離的作業。也可以使用不同的運算後端對相同作業進行基準測試，或將作業分散到多個可用區域以提高可用性。

下圖說明 Amazon EMR on EKS 如何與其他 AWS 服務搭配使用。

![\[Amazon EMR on EKS 架構\]](http://docs.aws.amazon.com/zh_tw/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 EMR 提供了一個部署選項，可讓您在 Amazon Elastic Kubernetes Service (Amazon EKS) 上執行開放原始碼大數據框架。本主題提供一些常見術語的內容，包括命名空間、虛擬叢集和任務執行，這些都是您提交進行處理的工作單位。

## 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 叢集上的一個命名空間。虛擬叢集不會建立任何增加帳單或需要在服務之外進行生命週期管理的作用中資源。

## 作業執行
<a name="emr-eks-concepts-job-run"></a>

作業執行是您提交至 Amazon EMR on EKS 的作業單位，例如 Spark jar、PySpark 指令碼或 SparkSQL 查詢。一個作業可以有多個作業執行。當您提交作業執行時，會包含下列資訊：
+ 應在其中執行作業的虛擬叢集。
+ 用於識別作業的作業名稱。
+ 執行角色 - 限定範圍的 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 EKS 叢集上使用 Kubernetes 命名空間註冊 Amazon EMR 可建立虛擬叢集。然後，Amazon EMR 可以在該命名空間上執行分析工作負載。當您使用 Amazon EMR on EKS 將 Spark 作業提交至虛擬叢集時，Amazon EMR on EKS 會請求 Amazon EKS 上的 Kubernetes 排程器來排程 Pod。

以下步驟和圖表說明了 Amazon EMR on EKS 工作流程：
+ 使用現有的 Amazon EKS 叢集，或使用 [eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) 命令列公用程式或 Amazon EKS 主控台來建立叢集。
+ 透過使用 EKS 叢集上的命名空間註冊 Amazon EMR 來建立虛擬叢集。
+ 使用 AWS CLI 或 SDK 將您的任務提交至虛擬叢集。

![\[Amazon EMR on EKS 作業\]](http://docs.aws.amazon.com/zh_tw/emr/latest/EMR-on-EKS-DevelopmentGuide/images/emr-on-eks-jobs.png)


對於您執行的每個作業，Amazon EMR on EKS 都會建立一個包含 Amazon Linux 2 基礎映像、Apache Spark 和相關相依性的容器。每個作業都會在可下載容器並開始執行該容器的 Pod 中執行。Pod 會在作業終止後終止。如果容器的映像先前已部署至節點，則會使用快取映像並略過下載。附屬容器 (例如日誌或指標轉寄站) 可部署至 Pod。作業終止後，您仍然可以使用 Amazon EMR 主控台中的 Spark 應用程式 UI 對其進行偵錯。