跳至主要內容

Amazon EMR

Amazon EMR 常見問答集

一般

全部開啟

Amazon EMR 是領先業界的雲端巨量資料平台,用於使用開放原始碼架構 (如 Apache Spark、Apache Hive 和 Presto) 來進行資料處理、互動式分析和機器學習。使用 EMR 時,您可以執行 PB 規模等級的分析,不僅成本不到傳統內部部署解決方案的一半,速度也比標準 Apache Spark 快 1.7 倍以上

Amazon EMR 讓您專注於轉換和分析資料,不必擔心管理運算容量或開放原始碼應用程式,並為您節省成本。使用 EMR 時,您可以立即在 Amazon EC2 上佈建任意大小的容量,並設定擴展規則來管理不斷變化的運算需求。您可以設定 CloudWatch 提醒,在基礎設施變更時通知您並立即採取行動。如果您使用 Kubernetes,您也可以使用 EMR 將工作負載提交至 Amazon EKS 叢集。不論使用 EC2 或 EKS,您都可以從 EMR 的最佳化執行時期獲益,進而提升分析速度並節省時間和金錢。

您可以使用 Amazon EC2、Amazon Elastic Kubernetes Service (EKS) 或內部部署 AWS Outposts,將工作負載部署到 EMR。您可以使用 EMR 主控台、API、SDK 或 CLI 執行並管理工作負載,並使用 Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 或 AWS Step Functions 協調它們。若要獲得互動體驗,您可以使用 EMR Studio 或 SageMaker Studio。

要註冊 Amazon EMR,按一下 Amazon EMR 詳細資訊頁面 http://aws.amazon.com/emr 上的「立即註冊」按鈕。您必須註冊 Amazon EC2 和 Amazon S3 才能存取 Amazon EMR;如果尚未註冊這些服務,系統會在 Amazon EMR 註冊過程中提示您註冊。註冊後,請參閱 Amazon EMR 文件,其中包括能夠協助您開始使用此服務的入門指南。

請參閱我們的服務水準協議

開發與偵錯

全部開啟

有關範本程式碼,請參閱這些文章和教學。如果使用 EMR Studio,您可以使用一組筆記本範例探索功能。

您可以在 Amazon EMR Studio 中,開發、視覺化和偵錯以 R、Python、Scala 和 PySpark 編寫的資料科學和資料工程應用程式。您還可以在桌面上開發資料處理任務,例如使用 Eclipse、Spyder、PyCharm 或 RStudio,然後在 Amazon EMR 上運行。此外,您可以在啟動新叢集時,在軟體設定中選擇 JupyterHubZeppelin,並使用一個或多個執行個體在 Amazon EMR 上開發應用程式。

命令列工具或 API 能夠讓您以程式設計方式啟動和監控叢集的執行進度、建立與叢集相關的其他自訂功能 (例如,多個處理步驟、排程、工作流程或監控的順序),或為其他 Amazon EMR 客戶建置加值型工具或應用程式。相比之下,AWS 管理主控台提供易用的圖形界面,可以直接從 Web 瀏覽器啟動和監控叢集。

是。您在工作執行之後可以透過 AddJobFlowSteps API 選擇性地新增更多步驟。AddJobFlowSteps API 會在目前步驟序列結尾加入新的步驟。您可以使用此 API 在叢集中執行條件邏輯或進行偵錯。

您可以註冊 Amazon SNS,當叢集完成時就會貼文到您的 SNS 主題。您也可以在 AWS 管理主控台上查看叢集進度,或者使用命令列、軟體開發套件或 API 以取得叢集狀態。

是。完成所有步驟後,您可以透過開啟自動終止標誌來自動終止叢集。

Amazon EMR 5.30.0 版及更新版本,以及 Amazon EMR 6.x 系列基於 Amazon Linux 2。您也可以指定根據 Amazon Linux 2 建立的自訂 AMI。這可讓您為幾乎所有應用程式執行精密的預先組態。如需詳細資訊,請參閱使用自訂 AMI

是。 您可以使用引導操作,在叢集中安裝第三方軟體套件。您也可以使用 Hadoop 分散式快取機制上傳靜態編譯的可執行檔。EMR 6.x 支援 Hadoop 3,可讓 YARN NodeManager 直接在 EMR 叢集主機或 Docker 容器內部啟動容器。若要進一步了解,請參閱我們的文件

您可以使用多種工具來收集有關叢集的資訊,以協助確定問題所在。如果使用 Amazon EMR Studio,您可以啟動 Spark UI 和 YARN Timeline Service 之類的工具來簡化偵錯。您可以從 Amazon EMR 主控台取消叢集對 Apache Spark、Tez UI 和 YARN Timeline Server 持久性應用程式使用者介面,若干叢集內應用程式使用者介面,以及所有 YARN 應用程式在 Amazon EMR 主控台中的應用程式歷史記錄摘要檢視的存取權。您也可以連接至使用 SSH 的主節點,以及透過 Web 介面檢視叢集執行個體。如需詳細資訊,請參閱我們的文件

EMR Studio

全部開啟

EMR Studio 是一種整合式開發環境 (IDE),可讓資料科學家和資料工程師開發、視覺化和偵錯以 R、Python、Scala 和 PySpark 編寫的資料工程和資料科學應用程式。

這是一個全受管應用程式,具有單一登入、全受管 Jupyter 筆記本、自動化基礎架構佈建,以及無需登入 AWS Console 或叢集即可對任務偵錯的功能。資料科學家和分析師可安裝自訂內核和程式庫,使用 GitHub 和 BitBucket 等程式碼儲存庫與對等進行協作,或者使用協同運作服務 (如 Apache Airflow、AWS Step Functions 以及 Amazon Managed Workflows for Apache Airflow) 執行參數化筆記本,作為排程工作流程的一部分。 您可以閱讀使用 Amazon MWAA 在 Amazon EMR 筆記本上協調分析任務,以了解更多資訊。EMR Studio 核心和應用程式在 EMR 叢集上執行,因此您可以使用針對 Apache Spark 進行效能最佳化的 Amazon EMR runtime for Apache Spark,取得分散式資料處理的優勢。管理員可為分析師設定 EMR Studio,以便在現有 EMR 叢集上執行其應用程式,或者使用針對 EMR 預先定義的 AWS CloudFormation 範本建立新的叢集。

藉助 EMR Studio,您無需登入 AWS Console,即可使用公司憑證直接登入全受管 Jupyter 筆記本,在幾秒鐘內啟動筆記本,開始使用範例筆記本,並執行資料探索。您還可以透過從筆記本載入自訂核心和 Python 程式庫來自訂環境。EMR Studio 核心和應用程式在 EMR 叢集上執行,因此您可以使用針對 Apache Spark 進行效能最佳化的 Amazon EMR runtime for Apache Spark,取得分散式資料處理的優勢。您可以透過 GitHub 和其他儲存庫共享筆記本,從而與同事協作。您也可以將筆記本作為持續整合和持續部署管道直接執行。您可以將不同的參數值傳遞至筆記本。您也可以使用 Apache Airflow 等工作流程協同運作服務,連結筆記本並將筆記本整合到排定的工作流程中。此外,您可以使用 Spark UI 和 YARN Timeline Service 等原生應用程式介面,按幾下滑鼠來偵錯叢集和任務。

共有五個主要區別。

  1. EMR Studio 無須存取 AWS 管理主控台。EMR Studio 在 AWS 管理主控台之外託管。如果您不向資料科學家或資料工程師提供 AWS 管理主控台存取權,這會很有用。

  2. 您可以使用 AWS IAM Identity Center (AWS SSO 的後繼者),透過身分供應商提供的企業登入資料來登入 EMR Studio。 

  3. EMR Studio 為您帶來筆記本優先體驗。EMR Studio 核心和應用程式在 EMR 叢集上執行,因此您可以使用針對 Apache Spark 進行效能最佳化的 Amazon EMR runtime for Apache Spark,取得分散式資料處理的優勢。在叢集上執行程式碼就像將筆記本連接到現有叢集或佈建新叢集一樣簡單。

  4. EMR Studio 有著簡潔的使用者介面和抽象化的硬體設定。例如,您可以設定一次叢集範本並使用範本執行新叢集。 

  5. EMR Studio 帶來簡化的偵錯體驗,您只需按幾下滑鼠即可在單一位置存取原生應用程式使用者介面。

您可以將 EMR Studio 和 SageMaker Studio 與 Amazon EMR 一起使用。EMR Studio 提供一種整合式開發環境 (IDE),可讓您開發、視覺化和偵錯以 R、Python、Scala 和 PySpark 編寫的資料工程和資料科學應用程式。Amazon SageMaker Studio 提供單一的 Web 視覺化界面,您可以在其中執行所有機器學習開發步驟。SageMaker Studio 讓您可以完全存取、控制和洞察在建立、訓練和部署模型時需要執行的每個步驟。您可以快速上傳資料,建立新的筆記本,訓練和調整模型,在步驟之間來回移動以調整實驗,比較結果,以及將模型部署至一處,讓您的工作更有效率。 

您的管理員必須先設定 EMR Studio。當您從管理員那裡收到 Amazon EMR Studio 的唯一登入 URL 時,可以使用公司憑證直接登入 Studio。

不需要。在您的管理員設定 EMR Studio 並提供 Studio 的存取 URL 後,團隊可以使用公司憑證來登入。不須登入 AWS 管理主控台。團隊可以在 EMR Studio 裡執行任務並存取由您的管理員設定的資源。

AWS IAM Identity Center (AWS SSO 的後繼者) 是 EMR Studio 的單一登入服務供應商。AWS IAM 支援的身分供應商清單可在我們的文件中找到。

Workspace 可幫您組織 Jupyter 筆記本。Workspace 中的所有筆記本都儲存在相同的 Amazon S3 位置,並在相同的叢集上執行。您也可以將程式碼儲存庫 (例如 GitHub 儲存庫) 連結到 Workspace 中的所有筆記本。您可以在將 WorkSpace 連接到叢集之前,建立 WorkSpace 並對其進行設定,不過您應該在執行筆記本之前,連接到叢集。

可以,您不須將其連接到叢集,就能建立或開啟 Workspace。只有在您需要執行時,才應該將其連接到叢集。EMR Studio 內核和應用程式在 EMR 叢集上執行,因此您可以使用針對 Apache Spark 進行效能最佳化的 Amazon EMR runtime for Apache Spark,取得分散式資料處理的優勢。

所有 Spark 查詢均在您的 EMR 叢集上執行,因此,您需要安裝 Spark 應用程式在叢集上使用的所有執行時期程式庫。您可以在筆記本儲存格內輕易地安裝筆記本範圍的程式庫。您還可以在筆記本儲存格內或使用 SSH 連接到叢集主節點時,在叢集主節點內安裝 Jupyter 筆記本核心和 Python 程式庫。如需詳細資訊,請參閱文件。此外,您可以使用引導操作或自訂 AMI 來在建立叢集時安裝所需的程式庫。如需詳細資訊,請參閱 Amazon EMR Management Guide 中的建立引導操作來安裝其他軟體使用自訂 AMI

Workspace 連同 Workspace 中的筆記本檔案會以 ipynb 檔案格式定期儲存至您在建立 Workspace 時指定的 Amazon S3 位置。筆記本檔案的名稱與 Amzon EMR Studio 中的筆記本相同。

您可以將 Git 架構的儲存庫與 Amazon EMR Studio 筆記本相關聯,以將筆記本儲存在版本控制的環境中。

使用 EMR Studio,您可以對在 Amazon Elastic Compute Cloud (Amazon EC2) 上執行的 Amazon EMR 或 Amazon Elastic Kubernetes Service (Amazon EKS) 上的 Amazon EMR 執行筆記本程式碼。您可以將筆記本連接至現有叢集或新叢集。您可以用兩種方式在 EMR Studio 中建立 EMR 叢集:透過 AWS Service Catalog 使用預先設定的叢集範本建立叢集,透過指定叢集名稱、執行個體數量和執行個體類型來建立叢集。

可以,您可以打開 WorkSpace,選擇左邊的 EMR 叢集圖示,按下中斷連結按鈕,接著從選取叢集下拉式選單中選取叢集,然後按下連結按鈕。

在 EMR Studio 中,可以選擇左邊的 Workspace 標籤,並檢視由您和其他使用者在同一個 AWS 帳戶裡建立的所有 WorkSpace。

每個 EMR Studio 都需要許可來和其他 AWS 服務相互操作。若要授予 EMR Studios 必要的許可,您的管理員需要使用提供的政策來建立 EMR Studio 服務角色。他們還需要為 EMR Studio 指定定義 Studio 級許可的使用者角色。他們將 AWS IAM Identity Center (AWS SSO 的後繼者) 的使用者與群組新增至 EMR Studio 時,可以將工作階段政策指派給使用者或群組,以套用精細的許可控制。工作階段政策可協助管理員定義使用者許可,無需建立多個 IAM 角色。如需有關工作階段政策的詳細資訊,請參閱 AWS Identity and Access Management 使用者指南中的政策和許可

是。當前不支援高可用性 (Multi-Master) 叢集,Kerberized 叢集和 AWS Lake Formation 叢集。

提供 Amazon EMR Studio 不另外收費。當您使用 EMR Studio 時,適用 Amazon Simple Storage Service 儲存以及 Amazon EMR 叢集費用。如需定價選項與細節的詳細資訊,請參閱 Amazon EMR 定價。

EMR Notebooks

全部開啟

我們建議新客戶使用 Amazon EMR Studio,而非 EMR Notebooks。EMR Notebooks 根據 Jupyter 筆記本提供受管的環境,允許資料科學家、分析師及開發人員使用 EMR 叢集準備和視覺化資料、與同儕協作、建置應用程式以及執行互動分析。儘管我們建議新客戶使用 EMR Studio,但 EMR Notebooks 也支援相容性。

您可以使用 EMR Notebooks 在 EMR 叢集上毫不費力地建置 Apache Spark 應用程式和執行互動查詢。多個使用者可直接從主控台建立無伺服器筆記本,將其連接至現有的共用 EMR 叢集,或直接從主控台佈建一個叢集並立即開始試用 Spark。您可以分離筆記本,然後將其重新連接至新叢集。筆記本會自動儲存到 S3 儲存貯體,您可以從主控台擷取儲存的筆記本以繼續工作。EMR Notebooks 預先封裝了 Anaconda 儲存庫中的程式庫,允許您在筆記本程式碼中匯入與使用程式庫,並將其用於操作資料和視覺化結果。此外,EMR Notebooks 內建 Spark 監控功能,可方便您監控 Spark 任務的進度,和進行筆記本程式碼的偵錯。

若要開始使用 EMR Notebooks,請打開 EMR 主控台,並在導覽窗格中,選擇筆記本。從那裡,只要選擇建立筆記本,輸入筆記本名稱,選擇 EMR 叢集或立即建立新叢集,提供服務角色給筆記本使用,接著選擇用來儲存筆記本檔案的 S3 儲存貯體,然後按一下建立筆記本。筆記本顯示就緒狀態後,選擇開啟以啟動筆記本編輯器。

EMR Notebooks 可連接至執行 EMR 5.18.0 或更新版本的 EMR 叢集。

提供 EMR Notebooks 不另外收費。您將需要針對帳戶中連接的 EMR 叢集付費。您可以透過瀏覽 https://aws.amazon.com/emr/pricing/ 來找到更多有關您叢集定價的資訊 

管理資料

全部開啟

Amazon EMR 提供幾種將資料放進叢集的方法。最常見的方法是將資料上傳到 Amazon S3,並使用 Amazon EMR 的內建功能將資料載入叢集。您可以使用 Hadoop 的分散式快取功能,將檔案從分散式檔案系統傳輸到本機檔案系統。如需更多詳細資訊,請參閲文件。或者,如果您要將資料從內部部屬遷移到雲端,則可以使用 AWS 的其中一項雲端資料遷移服務。

Hadoop 系統日誌及使用者日誌存放在您建立叢集時指定的 Amazon S3 儲存貯體中。持久性應用程式 UI 在叢集外執行,Spark History Server、Tez UI 和 YARN Timeline Server 日誌在應用程式終止的 30 天後可以使用。

不會。目前,Amazon EMR 不會在將日誌遷移到 Amazon S3 時壓縮日誌。

問:是否會壓縮日誌?

是。最後,您可以使用 AWS Direct Connect 建立到 AWS 的私有專用網路連線。如果您有大量的資料,可以使用 AWS Import/Export。如需詳細資訊,請參閱我們的文件

計費

全部開啟

不能,因為每個叢集和輸入資料不同,我們無法預估您的工作持續時間。

Amazon EMR 定價不但簡單而且可預測:您只需依所用的秒數支付每秒費率,但需支付一分鐘最低費用。您可以使用 AWS 定價計算器估算帳單。其他 Amazon Web Services 的使用 (包含 EC2) 與 Amazon EMR 分開計費。

當叢集準備好執行步驟時,Amazon EMR 開始計費。當您要求關閉叢集時,Amazon EMR 停止計費。如需 Amazon EC2 何時開始計費與何時停止計費的詳細資訊,請參閱 Amazon EC2 計費常見問答集

您可以在帳單和成本管理主控台追蹤您的使用情況。

在 AWS 管理主控台上,每個叢集都有一個 Normalized Instance Hours (標準化執行個體小時數) 欄位,顯示叢集已使用的大約運算小時數,調整到最接近的小時數。

標準化執行個體小時數是根據 1 小時 m1.small 用量 = 1 小時標準化運算時間的標準,計算得出的運算時間小時數。您可以檢視文件,查看執行個體系列中不同大小的清單,以及每小時對應的標準化因子。

例如,您已執行一小時的 10 節點 r3.8xlarge 叢集,則在主控台顯示的標準化執行個體總時數將為 640 (10 (節點數目) x 64 (標準化因子) x 1 (叢集已經執行的小時數) = 640)。

這是大約的數字,不應用於帳單計算。請參閱帳單和成本管理主控台,了解應計費的 Amazon EMR 用量。

是。Amazon EMR 可無縫支援隨需執行個體、競價型執行個體和預留執行個體。按一下這裡進一步了解有關 Amazon EC2 預留執行個體的資訊。按一下這裡進一步了解有關 Amazon EC2 Spot 執行個體的資訊。按一下這裡進一步了解有關 Amazon EC2 容量保留的資訊。

除非另有說明,否則我們的價格不包括適用的稅金和稅收 (包括加值稅和適用的營業稅)。帳單地址在日本的客戶若使用 AWS 服務,則需負擔日本消費稅。進一步了解。 

安全和資料存取控制

全部開啟

Amazon EMR 會在兩個 Amazon EC2 安全群組中啟動您的執行個體,一個用於主執行個體,另一個用於其他叢集節點。主安全群組有一個用於與服務通訊的開放連接埠。另外也開放 SSH 連接埠,允許您使用啟動時指定的金鑰 SSH 到執行個體中。其他節點在單獨的安全群組中啟動,僅允許與主執行個體互動。預設情況下,兩個安全群組都設定為不允許從外部來源存取,包括屬於其他客戶的 Amazon EC2 執行個體。由於這些是您帳戶內的安全群組,所以可以使用標準 EC2 工具或儀表板重新設定。按一下這裡進一步了解 EC2 安全群組。此外,如果規則允許公開存取未新增例外清單的任何連接埠,您則可以在每個區域中設定 Amazon EMR 封鎖公開存取,以避免建立叢集。

Amazon S3 提供身份驗證機制,可確保存放的資料安全無虞,未經授權無法存取這些資料。除非上傳資料的客戶另行指定,否則只有該客戶能存取資料。Amazon EMR 客戶還可以選擇使用 HTTPS 通訊協定將資料傳送到 Amazon S3,確保安全的傳輸。此外,Amazon EMR 一律使用 HTTPS 在 Amazon S3 與 Amazon EC2 之間傳送資料。為提高安全性,客戶可以在將輸入資料上傳到 Amazon S3 之前先加密資料 (使用任何常見的資料加密工具);然後,當 Amazon EMR 從 Amazon S3 擷取資料時,需要在叢集一開始新增解密步驟。

是。AWS CloudTrail 是一項 Web 服務,用於記錄您帳戶的 AWS API 呼叫並為您提供日誌檔案。CloudTrail 產生的 AWS API 呼叫歷史記錄可用於安全分析、資源變更追蹤以及合規稽核。在 AWS CloudTrail 詳細資訊頁面進一步了解有關 CloudTrail 的資訊,並透過 CloudTrail 的 AWS 管理主控台開啟此功能。

依預設,Amazon EMR 應用程式在呼叫其他 AWS 服務時,使用 EC2 執行個體設定檔。針對多租戶叢集,Amazon EMR 提供三個選項來管理使用者對 Amazon S3 資料的存取。

  1. 與 AWS Lake Formation 整合可讓您在 AWS Lake Formation 中定義和管理微調的授權政策,以便在 AWS Glue Data Catalog 中存取資料庫、資料表和資料欄。您可以對透過 Amazon EMR NotebooksApache Zeppelin 提交的針對互動式 EMR Spark 工作負載的任務強制執行授權政策,並傳送稽核事件至 AWS CloudTrail。透過啟用整合,您還可以從與安全聲明標記語言 (SAML) 2.0 相容的企業身份系統啟用聯合單一登入 EMR Notebooks 或 Apache Zeppelin。

  2. 與 Apache Ranger 原生整合可讓您設定新的或現有的 Apache Ranger 伺服器,以定義或管理微調的授權政策,供使用者透過 Hive Metastore 存取 Amazon S3 資料的資料庫、資料表和資料欄。Apache Ranger 是一種開放原始碼工具,可跨 Hadoop 平台啟用、監控和管理全方位資料安全性。

    此原生整合可讓您在 Apache Ranger Policy Admin 伺服器上定義三種授權政策類型。您可以為 Hive 設定表格級、欄層級和資料列層級授權,為 Spark 設定表格級和欄層級授權,為 Amazon S3 設定字首層級和物件層級授權。Amazon EMR 會自動在叢集上安裝和設定相應的 Apache Ranger 外掛程式。這些 Ranger 外掛程式與 Policy Admin 伺服器同步,以進行授權政策,強制執行資料存取控制,以及傳送事件至 Amazon CloudWatch Logs

  3. Amazon EMR User Role Mapper 可讓您利用 AWS IAM 許可,管理 AWS 資源的存取。您可以在使用者 (或群者) 和自訂 IAM 角色之間建立映射。使用者或群組只能存取自訂 IAM 角色許可的資料。此功能目前可透過 AWS 實驗室使用。

區域與可用區域

全部開啟

Amazon EMR 可啟動相同 Amazon EC2 可用區域中指定叢集的所有節點。在相同區域中執行叢集可提升任務流程的效能。預設情況下,Amazon EMR 會選擇擁有最多可用資源的可用區域來執行叢集。不過,您可以視需要指定其他可用區域。您也可以選擇為最低價的隨需執行個體、最佳 Spot 容量或使用隨需容量保留最佳化分配。

支援 Amazon EMR AWS 區域的詳細清單,請參閱所有 AWS 全球基礎設施的 AWS 區域表

EMR 支援在洛杉磯 AWS Local Zones 中啟動叢集。您可以在美國西部 (奧勒岡) 區域中使用 EMR 啟動叢集到與洛杉磯 AWS Local Zones 關聯的子網路。

建立叢集時,通常應選擇您的資料所在的區域。

是的,可以。如果您將資料從一個區域傳輸到另一個區域,需支付頻寬費用。有關頻寬定價資訊,請瀏覽 EC2 詳細資訊頁面上的定價部分。

AWS GovCloud (美國) 區域專為美國政府機構和客戶而設計。遵守 US ITAR 要求。在 GovCloud,EMR 不支援 Spot 執行個體或啟用偵錯功能。GovCloud 中尚未提供 EMR 管理主控台。

部署選項

全部開啟

Amazon EC2 上的 Amazon EMR

全部開啟

叢集是 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的集合。叢集中的每個執行個體都稱為節點,並在叢集中具有角色,即是指節點類型。Amazon EMR 還在每個節點類型上安裝不同的軟體元件,在分散式應用程式 (如 Apache Hadoop) 中賦予角色給每一個節點。每個叢集都有一個以 "j-" 開頭的唯一識別符。

Amazon EMR 叢集有三種類型的節點:

  1. 主節點:透過執行軟體元件,協調資料和任務在其他節點之間的分發,以進行處理來管理叢集的節點。主節點追蹤任務狀態並監控叢集的運作狀態。每個叢集具有一個主節點,並可以建立一個只有主節點的單一節點叢集。

  2. 核心節點:具有軟體元件的節點,可在叢集上的 Hadoop 分散式檔案系統 (HDFS) 中執行任務和儲存資料。多節點叢集具有至少一個核心節點。

  3. 任務節點:具有任務元件的節點,只能執行任務,而且不能將資料儲存在 HDFS。任務節點為選用。

叢集步驟是使用者定義的處理單位,其大約對應到一個操作資料的演算法。步驟是一種以 Java、Ruby、Perl、Python、PHP、R 或 C++ 編寫,並以 Java Jar 或串流程式的方式實作的 Hadoop MapReduce 應用程式。例如,要計算文件中單詞出現的頻率,並按計數排序輸出結果,第一個步驟是計算每個單詞出現次數的 MapReduce 應用程式,第二個步驟則是根據計數來排序第一個步驟輸出結果的 MapReduce 應用程式。

STARTING – 透過設定 EC2 執行個體來啟動叢集。
BOOTSTRAPPING – 叢集上正在執行引導操作。
RUNNING – 目前正在執行叢集步驟。
WAITING – 叢集目前作用中,但沒有要執行的步驟。
TERMINATING – 叢集正在執行關閉程序。
TERMINATED – 叢集已關閉,且沒有發生錯誤。
TERMINATED_WITH_ERRORS – 叢集已關閉,但發生錯誤。

PENDING – 步驟正在等待執行。

RUNNING – 步驟目前正在執行。

COMPLETED – 步驟已成功完成。

CANCELLED – 步驟已在執行前取消,因為之前的步驟故障或叢集在執行該步驟前已終止。

FAILED – 步驟在執行時發生故障。

您可以填寫簡單的叢集申請表,透過 AWS 管理主控台啟動叢集。您要在申請表中指定叢集的名稱、Amazon S3 中輸入資料的位置、處理應用程式、所需的資料輸出位置,以及希望使用的 Amazon EC2 執行個體數量和類型。您也可以指定存放叢集日誌檔案和 SSH 金鑰的位置,以便在叢集執行時進行登入。或者,您可以使用 RunJobFlow API 或在命令列工具中使用「create」命令啟動叢集。如需使用 EMR Studio 啟動叢集的資訊,請參閱上述的 EMR Studio 部分。

您可以隨時在 AWS 管理主控台中選擇叢集並按一下「終止」按鈕來終止叢集。或者,也可以使用 TerminateJobFlows API。如果終止正在執行的叢集,則 Amazon S3 中尚未保存的任何結果都將遺失,而且所有 Amazon EC2 執行個體都會關閉。

您可以根據需要執行任何數量的叢集。開始執行時,您在所有叢集僅限執行 20 個執行個體。如果需要執行更多數量的執行個體,請填寫 Amazon EC2 執行個體申請表。一旦您的 Amazon EC2 限額提升,Amazon EMR 叢集就會自動套用新的限額。

您可以將輸入資料和資料處理應用程式上傳到 Amazon S3 中。然後,Amazon EMR 根據您的指定,啟動一定數量的 Amazon EC2 執行個體。服務開始執行叢集,同時使用 S3 URI 方案將輸入資料從 Amazon S3 提取到啟動的 Amazon EC2 執行個體中。叢集完成後,Amazon EMR 將輸出資料傳輸到 Amazon S3,您就可以在此擷取資料,或將資料做為另一個叢集的輸入資料。

Amazon EMR 使用 Hadoop 資料處理引擎來執行 MapReduce 程式設計模型中實作的運算。客戶可實作 map() 和 reduce() 函數的演算法。服務會啟動客戶指定的 Amazon EC2 執行個體數量,其中包含一個主執行個體和多個其他節點。Amazon EMR 在這些執行個體上執行 Hadoop 軟體。主節點將輸入資料劃分成多個區塊,並將區塊的處理工作分配給其他節點。然後,每個節點在分配給它的資料上執行 map 函數,產生中繼資料。接著排序和分割中繼資料,再傳送到在本機節點上對其套用縮減器函數的程序。最後,在檔案中收集縮減器任務的輸出。一個「叢集」可能包含一系列上述 MapReduce 步驟。

有關各區域最新可用執行個體類型和定價的詳細資訊,請參閱 EMR 定價頁面

執行叢集所需的時間取決於多種因素,包括叢集的類型、輸入資料的數量,以及為叢集選擇的 Amazon EC2 執行個體數量和類型。

是。您可以啟動包含三個主節點的 EMR 叢集 (版本 5.23 或更新版本),然後支援 YARN Resource Manager、HDFS Name Node、Spark、Hive 和 Ganglia 這類應用程式的高可用性。如果主要主節點故障或 Resource Manager 或 Name Node 等關鍵程序中斷,Amazon EMR 會自動容錯移轉至備用主節點。使用此功能之後,主節點不是潛在的單一故障點,因此您可以執行長效 EMR 叢集,且不用擔心中斷。在容錯移轉的情況下,Amazon EMR 會自動使用擁有相同組態和引導操作的新主節點替換故障的主節點。 

是。Amazon EMR 具有節點故障的容錯能力,當節點發生故障時,將繼續執行工作。Amazon EMR 也會在核心節點故障時佈建新節點。不過,如果叢集中的所有節點都遺失,Amazon EMR 將不會取代節點。

是。您可以使用 SSH 存取叢集節點,並從該位置直接執行 Hadoop 命令。如果您需要使用 SSH 存取特定的節點,必須先使用 SSH 存取主節點,再使用 SSH 存取所需節點。

引導操作是 Amazon EMR 中的一項功能,為使用者提供在執行叢集前執行自訂設定的方式。執行叢集前,可使用引導操作來安裝軟體或設定執行個體。有關引導操作的更多資訊,請參閱 EMR 的開發人員指南

您可以用叢集執行個體上已安裝的任何語言編寫引導操作指令碼,包括 Bash、Perl、Python、Ruby、C++ 或 Java。可使用一些預先定義的引導操作。指令碼編寫完成後,您需要將指令碼上傳到 Amazon S3,並在啟動叢集時參考其位置。請參閱開發人員指南,了解如何使用引導操作的詳細資訊。

EMR 預設的 Hadoop 設定適合大多數工作負載。不過,根據叢集的特定記憶體和處理要求,最好對這些設定進行調校。例如,如果叢集任務需要使用大量記憶體,您可以選擇每個核心使用較少的任務,並降低工作追蹤器堆積大小。在這種情況下,可以使用預先定義的引導操作,在啟動時設定叢集。請參閱開發人員指南中的設定記憶體密集型引導操作,了解設定詳細資訊和使用說明。您可以使用其他預先定義的引導操作,針對所選的任何數值自訂叢集設定。請參閱開發人員指南中的設定 Hadoop 引導操作,了解相關使用說明。

是。節點有兩種類型:(1) 核心節點,既可使用 Hadoop 分散式檔案系統 (HDFS) 託管持續性資料,又能執行 Hadoop 任務;以及 (2) 任務節點,僅用來執行 Hadoop 任務。當叢集執行時,您可以增加核心節點的數量,也可以增加或減少任務節點的數量。您可以透過 API、Java SDK 或透過命令列用戶端執行此操作。請參閱開發人員指南中的調整執行中叢集的大小部分,了解如何修改執行中叢集大小的詳細資訊。您也可以使用 EMR 受管擴展。

由於核心節點在 HDFS 中託管持續性資料且無法移除,所以核心節點應該保留用於必要的容量,直到叢集完成為止。任務節點可以新增或移除且不含 HDFS,所以非常適合僅臨時需要容量的情況。您可以在 Spot 執行個體上啟動任務執行個體機群,在提升容量的同時,將成本降至最低。

在某些情況下,您可能會希望修改執行中叢集的節點數。如果您的叢集執行速度低於預期,或時間要求發生變化,可以增加核心節點數以提高叢集效能。如果叢集的不同階段有不同的容量需求,您可以一開始使用少量核心節點,再增減任務節點的數量,以滿足叢集不斷變化的容量要求。 您也可以使用 EMR 受管擴展。

是。您可以在工作流程中包含預先定義的步驟,自動在已知有不同容量需求的步驟之間調整叢集大小。由於所有步驟都保證按順序執行,這讓您能夠設定執行指定叢集步驟的節點數。

要建立對 EMR CLI 中所有 IAM 使用者顯示的新叢集:在建立叢集時新增 --visible-to-all-users 旗標。例如:elastic-mapreduce --create --visible-to-all-users。在管理主控台內,只需在建立叢集精靈的「進階選項」面板上選擇「所有 IAM 使用者可見」即可。

要讓現有叢集對所有 IAM 使用者顯示,您必須使用 EMR CLI。使用 --set-visible-to-all-users 並指定叢集識別符。例如:elastic-mapreduce --set-visible-to-all-users true --jobflow j-xxxxxxx。此步驟只能由叢集的建立者執行。

要進一步了解相關資訊,請參閱 EMR 開發人員指南中的設定使用者許可部分。

您可以將標籤新增到作用中的 Amazon EMR 叢集。Amazon EMR 叢集由 Amazon EC2 執行個體組成,新增到 Amazon EMR 叢集的標籤將傳播到該叢集的每個作用中 Amazon EC2 執行個體。您無法在已終止的叢集或者屬於作用中叢集一部分的已終止 Amazon EC2 執行個體新增、編輯或移除標籤。

否,Amazon EMR 不支援依標籤以資源為基礎的權限。不過,請務必注意,傳播到 Amazon EC2 執行個體的標籤與一般 Amazon EC2 標籤的行為方式相同。因此,如果從 Amazon EMR 傳播的標籤與適用於 Amazon EC2 的 IAM 政策中的條件相符,則此政策將對這些標籤採取動作。

在 Amazon EMR 叢集上最多可以新增十個標籤。

是,Amazon EMR 會將新增到叢集的標籤傳播到該叢集的基礎 EC2 執行個體。如果將標籤新增到 Amazon EMR 叢集,則此標籤也會顯示在相關的 Amazon EC2 執行個體上。同樣地,如果從 Amazon EMR 叢集移除某個標籤,也會從其相關的 Amazon EC2 執行個體移除該標籤。不過,如果使用適用於 Amazon EC2 的 IAM 政策,並計劃使用 Amazon EMR 的標記功能,您應該確保授予使用 Amazon EC2 標籤 API CreateTags 和 DeleteTags 的許可。

這裡選擇要在 AWS 帳單報告中使用的標籤。然後,根據具有相同標籤鍵值的資源來組織帳單資訊,以查看合併資源的成本。

與 Amazon EMR 叢集關聯的 Amazon EC2 執行個體會有兩個系統標籤:

  • aws:elasticmapreduce:instance-group-role=CORE

    • Key = instance-group role ; Value = [CORE or TASK];

  • aws:elasticmapreduce:job-flow-id=j-12345678

    • Key = job-flow-id ; Value = [JobFlowID]

是,您可以在屬於 Amazon EMR 叢集的 Amazon EC2 執行個體上直接新增或移除標籤。不過,我們不建議這麼做,因為 Amazon EMR 的標記系統不會直接同步您對關聯的 Amazon EC2 執行個體所做的變更。我們建議從 Amazon EMR 主控台、CLI 或 API 新增和移除 Amazon EMR 叢集的標籤,以確保叢集及其關聯的 Amazon EC2 執行個體具有正確的標籤。

EMR Serverless

全部開啟

Amazon EMR Serverless 是 Amazon EMR 中的全新部署選項,允許您執行巨量資料架構,例如 Apache Spark 和 Apache Hive,而無需設定、管理和擴展叢集。

資料工程師、分析師和科學家可以使用 EMR Serverless 來建置使用開放原始碼架構 (例如 Apache Spark 和 Apache Hive) 的應用程式。他們可以使用架構來轉換資料、執行互動式 SQL 查詢和機器學習工作負載。

您可以使用 EMR Studio、AWS CLI 或 API 來提交任務、追蹤任務狀態並建置資料管道,以在 EMR Serverless 上執行。若要開始使用 EMR Studio,請登入 AWS 管理主控台,導覽至分析類別下的 Amazon EMR,再選取 Amazon EMR Serverless。按照 AWS 管理主控台中的說明,導覽至分析類別下的 Amazon EMR,再選取 Amazon EMR Serverless。 按照入門指南中的說明,建立 EMR Serverless 應用程式並提交任務。您可以參閱在 AWS CLI 頁面上與應用程式互動,啟動您的應用程式並使用 CLI 提交任務。您也可以在 GitHub 儲存庫中找到 EMR Serverless 範例以及範例程式碼。

EMR Serverless 目前支援 Apache Spark 和 Apache Hive 引擎。如果您需要 Apache Presto 或 Apache Flink 等其他架構的支援,請發送請求至 emr-feedback@amazon.com。

EMR Serverless 於以下 AWS 區域提供︰亞太地區 (孟買)、亞太地區 (首爾)、亞太地區 (新加坡)、亞太地區 (雪梨)、亞太地區 (東京)、加拿大 (中部)、歐洲 (法蘭克福)、歐洲 (愛爾蘭)、歐洲 (倫敦)、歐洲 (巴黎)、歐洲 (斯德哥爾摩)、南美洲 (聖保羅)、美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (加利佛尼亞北部) 和美國西部 (奧勒岡)。

Amazon EMR 提供了在 EC2 型的叢集、EKS 叢集、Outposts 或無伺服器上執行應用程式的選項。EC2 叢集上的 EMR 適用於需要最大控制權和彈性來執行其應用程式的客戶。借助 EC2 叢集上的 EMR,客戶可以選擇 EC2 執行個體類型以滿足應用程式特定性能需求、自訂 Linux AMI、自訂 EC2 執行個體設定、自訂並擴展開放原始碼架構,以及在叢集執行個體上安裝其他自訂軟體。EKS 上的 Amazon EMR 適用於希望在 EKS 上進行標準化,以跨應用程式管理叢集,或在同一叢集上使用不同版本的開放原始碼的客戶。AWS Outposts 上的 Amazon EMR 適用於希望在離資料中心更近的 Outpost 內執行 EMR 的客戶。EMR Serverless 適用於希望避免管理和營運叢集,以及偏好使用開放原始碼架構執行應用程式的客戶。

特徵


EMR Serverless


EC2 上的 Amazon EMR

EKS 上的 Amazon EMR


支援最新的開放原始碼版本


Y


Y

Y

可用區域故障恢復能力


Y


N

Y

依需求自動擴展與縮減資源


Y


Y

Y

靜態資料加密


Y


Y

Y


支援的開放原始碼架構


Spark 和 Hive


多個

Spark


支援使用 AWS Lake Formation 進行精確的授權


N


Y

N

支援 Apache Hudi 與 Apache Iceberg

Y

Y

Y

與 Apache Ranger 整合以達到表格級和欄層級許可控制


N


Y

N

自訂作業系統映像


Y


Y

Y

自訂已安裝的開放原始碼架構

Y

Y

Y

自訂與載入其他程式庫和相依性

Y

Y

Y

從 SageMaker Studio 執行工作負載來作為機器學習 (ML) 工作流程的一部分

N


Y

N

連接至自我託管 Jupyter 筆記本

N

Y

Y

使用 Apache Airflow 和 Amazon Managed Workflows for Apache Airflow (MWAA) 建置和協調管道


Y


Y

Y

使用 AWS Step Functions 建置和協調管道

Y


Y

Y

EMR Serverless 支持 EMR 版本標籤 6.6 和更新版本。使用 EMR Serverless,您可以得到與其他 EMR 部署選項相同的性能最佳化 EMR 執行時期,其與標準開放原始碼架構 100% API 相容。

BilledResourceUtilization 只會考慮用於任務之預先初始化容量的持續時間,而不會將這類容量的任何閒置時間計入。

如果工作者的執行時期持續時間小於 60 秒,則 BilledResourceUtilization 會以 60 秒計算,而 TotalResourceUtilization 則會四捨五入到最接近的秒數。此外,BilledResourceUtilization 會在計算中排除 20GB 的免費儲存空間。

有了 Amazon EMR Serverless,您可以建立一個或多個使用開放原始碼分析架構的 EMR Serverless 應用程式。若要建立應用程式,您必須指定以下屬性:1) 您要使用的開放原始碼框架版本的 Amazon EMR 發行版本,以及 2) 您希望應用程式使用的特定分析引擎,例如 Apache Spark 3.1或 Apache Hive 3.0。建立應用程式後,您可以開始執行資料處理任務或對應用程式的互動式請求。

EMR Serverless 應用程式在內部使用工作者來執行工作負載。提交任務時,EMR Serverless 會運算任務所需的資源,並排程工作者。EMR Serverless 將工作負載細分為任務,使用開放原始碼佈建和設定工作者,並在任務完成時進行淘汰。EMR Serverless 會根據任務每個階段所需的工作負載和平行處理自動擴展或縮減工作者,因此您無需預估執行工作負載所需的工作者數量。預設的工作者大小依您的應用程式類型以及 Amazon EMR 發行版本而定。您可以在安排任務執行時覆寫這些大小。

使用 EMR Serverless,您可以指定並行工作者的數目下限與上限以及工作者的 vCPU 和記憶體設定。您還可以設定應用程式資源的容量限制上限以控制成本。

在執行以下任一項操作時,考慮建立多個應用程式:

  1. 使用不同的開放原始碼架構

  2. 為不同的使用案例使用不同版本的開放原始碼架構

  3. 從一個版本升級到另一個版本時執行 A/B 測試

  4. 為測試和生產案例維護單獨的邏輯環境

  5. 透過獨立的成本控制和用量追蹤,為不同的團隊提供單獨的邏輯環境

  6. 分開不同業務線的應用程式

可以,您可以使用 EMR Studio 或更新應用程式 API/CLI 呼叫來修改應用程式屬性,例如初始容量、容量上限和網路設定。

不具有預先初始化的工作者的 EMR Serverless 應用程式,最長需要 120 秒來判定並佈建所需的資源。EMR Serverless 提供了一項選用功能,可以讓工作者在幾秒鐘內完成初始化並準備好回應,有效地為應用程式建立一個待命工作者集區。該功能稱為預先初始化功能,可以透過設定應用程式的初始化功能參數來為每個應用程式設定。

預先初始化的容量允許立即啟動任務,使其成為實作有時間急迫性任務的理想選擇。您可以指定啟動 EMR Serverless 應用程式時,想要預先初始化的工作者數量。隨後,在使用者提交任務時,可使用預先初始化的工作者立即啟動任務。如果任務需要的工作者數量比您選擇的預先初始化數量還多,EMR Serverless 會自動新增更多工作者 (最多達您指定的最大並行限制)。任務結束後,EMR Serverless 會自動恢復為維護您指定的預先初始化的工作者。已閒置 15 分鐘的工作者會自動關閉。您可以使用 updateApplication API 或 EMR Studio 變更應用程式的預設閒置逾時。

您可以使用 EMR Studio、SDK/CLI 或我們的 Apache Airflow 連接器提交和管理 EMR Serverless 任務。

對於 PySpark,您可以使用 virtualenv 封裝 Python 相依性,並使用 --archives 選項傳遞封存檔案,讓工作者在任務執行期間得以使用相依性。針對 Scala 或 Java,您可以將相依性封裝為 Jar,將它們上傳到 Amazon S3,然後使用 --jars 或 --packages 選項將它們傳遞給 EMR Serverless 任務來執行。

EMR Serverless 支援以 Java 為基礎的 UDF。您可以將其封裝為 Jar,上傳到 Amazon S3,並在 Spark 或 HiveQL 指令碼中使用。

請參閱支援的工作者設定以取得詳細資訊。

可以,您可以從 EMR Studio 或呼叫 cancelJobRun API/CLI 取消正在執行的 EMR Serverless 任務。

您可以在工作提交期間選取適當的儲存空間選項,將額外儲存空間新增至 EMR Serverless 中的工作人員。EMR 無伺服器提供兩種暫存選項:

  • 標準儲存空間:此選項預設為每個工作人員提供 20 GB 暫存空間。您可以在工作提交期間自訂此項目,並將儲存容量從 20 GB 增加至每位工作人員 200 GB。

  • 隨機最佳化的磁碟儲存空間:此選項每個工作人員最多可提供 2 TB 暫存空間,針對隨機密集型工作負載進行最佳化。

您可以在 GitHub 儲存庫找到 EMR Serverless 程式碼範例。

EMR Serverless 為工作者提供兩種選項:隨選工作者和預先初始化工作者。

隨需工作者只有在任務需要時才會啟動,並會在任務完成時自動釋放。這可協助您節省成本,僅為使用的資源付費,而且能避免閒置容量的任何額外成本。隨需工作者會根據您的工作負載擴展或縮減應用程式,因此您不必擔心過度佈建資源或佈建不足。

預先初始化工作者是選擇性功能,您可以讓工作者保持就緒以便在幾秒鐘內回應。這實際上為應用程式建立了一個工作者的暖集區,讓任務能馬上開始,因此非常適合疊代型應用程式和有時效性的任務。

是,可以跨多個 AZ 設定 EMR Serverless 應用程式。設置多個 AZ 的程序取決於您使用的工作者類型。

僅使用隨需工作者時,EMR Serverless 預設會將任務分配到多個 AZ,但每個任務只能在一個 AZ 中執行。您可以透過將子網路與 AZ 相關聯來選擇要使用的 AZ。如果 AZ 發生問題,EMR Serverless 會自動在另一個運作狀態良好的 AZ 中執行您的任務。

使用預先初始化工作者時,EMR Serverless 會從您指定的子網路中選取運作狀態良好的 AZ。會在該 AZ 中提交任務,直到您停止應用程式為止。如果 AZ 受損,您可以重新啟動應用程式以切換到另一個運作狀態良好的 AZ。

當設定為沒有 VPC 連線時,EMR Serverless 只能存取相同區域中的特定 AWS 資源。參見考量。若要存取不同區域中的 AWS 資源或非 AWS 資源,您需要設定 VPC 存取權和 NAT 閘道,以路由至 AWS 資源的公有端點。

Amazon EMR Serverless 應用程式和任務層級指標每 30 秒發佈到 Amazon CloudWatch。

在 EMR Studio 中,您可以選取正在執行或已完成的 EMR Serverless 任務,然後按一下 Spark UI 或 Tez UI 按鈕來啟動它們。

可以,您可以設定 Amazon EMR Serverless 應用程式,來存取自己的 VPC 裡的資源。請參閱文件中的設定 VPC 存取部分,以進一步了解更多資訊。 

每個 EMR Serverless 應用程式皆與其他應用程式隔離,並在安全的 Amazon VPC 上執行。

Amazon EMR Serverless 引入新的服務配額,稱為每個帳戶的最高並行 vCPU。此 vCPU 配額可供您設定應用程式在區域內至多可向上擴展的最大彙總 vCPU 數量。現有的應用程式層級工作者配額(最多活躍工作者)將於 2023 年 2 月 1 日截止支援。

您可在 AWS Service Quotas 管理主控台檢視、管理及請求提升配額。如需詳細資訊,請參閱 Service Quotas 使用者指南中的請求提升配額。

EMR Serverless 提供兩種成本控制方式 - 1/ 每個帳戶的最高並行 vCPU 配額,會在您的帳戶下套用在區域內的所有 EMR Serverless 應用程式。2/ maximumCapacity 參數,可限制特定 EMR Serverless 應用程式的 vCPU。您應使用 vCPU 配額限制區域內所有應用程式使用的最高並行 vCPU,以 maximumCapacity 屬性限制特定應用程式使用的資源。例如,假設您有 5 個應用程式,每個應用程式各能向上擴展至 1000 vCPU,則您可將 maximumCapacity 屬性設定為每個應用程式各 1000 vCPU,並將帳戶層級的 vCPU 配額設定為 5 * 1000 = 5000 vCPU。

如您超過帳戶層級的 vCPU 配額,EMR Serverless 會停止佈建新容量。如您在超過配額之後嘗試建立新的應用程式,應用程式的建立會失敗,並顯示錯誤訊息「應用程式無法建立,因您超出每個帳戶的最高並行 vCPU 服務配額。您可使用 AWS Service Quotas 主控台檢視及管理服務配額。」 如您在超出配額之後提交新任務,任務會失敗,並顯示錯誤訊息:「任務失敗,原因是您已超出每個帳戶的最高並行 vCPU 服務配額。您可使用 AWS Service Quotas 主控台檢視及管理服務配額。」 請參閱文件以取得詳細資訊。

Amazon EMR Serverless 可透過三種方式幫助您節省成本。首先,沒有管理、保護和擴展叢集的營運開銷。第二點,EMR Serverless 在處理您的任務的每個階段自動擴展工作者,並在不需要時縮減工作者。您需要為從工作者開始執行到停止時使用的聚合 vCPU、記憶體和儲存資源付費,四捨五入到最接近的秒數,最短為 1 分鐘。例如,您的任務可能需要 10 名工作者處理任務的前 10 分鐘,和 50 名工作者處理接下來的 5 分鐘。透過微調自動擴展,您只需為 10 名工作者使用 10 分鐘和 50 名工作者使用 5 分鐘支付費用。因此,您不必為使用率過低的資源付費。第三點,EMR Serverless 包括針對 Apache Spark 和 Apache Hive 以及 Presto 的 Amazon EMR 性能最佳化執行時間。Amazon EMR 執行時期與 API 相容,速度是標準開放原始碼分析引擎的兩倍多,因此您的任務執行速度更快,運算成本更低。

成本依您目前 EC2 叢集上的 EMR 使用率而定。如果您正在使用 EC2 隨需執行個體執行 EMR 叢集,假如目前的叢集使用率低於 70%,則 EMR Serverless 將提供較低的總體擁有成本。如果您使用的是 EC2 Savings Plans,假如目前的叢集使用率低於 50%,EMR Serverless 將提供較低的 TCO。如果您使用 EC2 Spot 執行個體,EC2 上的 Amazon EMR 和 EKS 上的 Amazon EMR 會更加經濟實惠。

是,如果任務完成後,沒有停止工作者的話,您需要支付預先初始化的工作者費用。

對於 PySpark,您可以使用 virtualenv 封裝 Python 相依性,並使用 --archives 選項傳遞封存檔案,讓工作者在任務執行期間得以使用相依性。針對 Scala 或 Java,您可以將相依性封裝為 Jar,將它們上傳到 Amazon S3,然後使用 --jars 或 --packages 選項將它們傳遞給 EMR Serverless 任務來執行。

對於 PySpark,您可以使用 virtualenv 封裝 Python 相依性,並使用 --archives 選項傳遞封存檔案,讓工作者在任務執行期間得以使用相依性。針對 Scala 或 Java,您可以將相依性封裝為 Jar,將它們上傳到 Amazon S3,然後使用 --jars 或 --packages 選項將它們傳遞給 EMR Serverless 任務來執行。

Amazon EMR Serverless 免除了 Apache Spark 工作負載的本機儲存佈建需求,可降低高達 20% 的資料處理成本,並防止因磁碟容量限制導致的任務失敗。EMR Serverless 會自動處理隨機等中間資料作業,而不需要任何基礎架構決策。藉由獨立於運算工作節點自動處理中間資料,此最佳化使 Spark 的動態資源配置 (DRA) 能在不再需要運算資源進行處理時立即釋放資源,無須為了保留暫時性本機資料而持續運作。此自動增強功能為大型彙總、聯結及排序密集型分析等寬轉換工作負載提供更大彈性,讓運算資源能在各工作階段間動態擴展與縮減,不受本機儲存資料限制。

使用 EMR 7.12 或更新版本時,只需選擇加入即可。Spark 任務將自動受惠於最佳化的中間資料處理,無需進行任何設定。您可使用 Spark Live UI 即時監控任務,並於 Spark History Server 中檢視已完成任務的詳細 Shuffle 及各階段溢出指標。

中間資料僅於任務執行期間儲存,並在任務完成時自動刪除,確保資料不會留存超過任務生命週期。

此自動最佳化可透過多層保護,維持與 EMR Serverless 相同的企業級安全標準。所有資料都會在 EMR Serverless 應用程式與中間資料處理層之間傳輸時加密,以及在暫時儲存時,使用 AWS 管理的加密金鑰時加密。此功能會在命名空間內將中間資料儲存在工作特定的識別碼下,藉此強制執行嚴格的資料隔離和存取控制,確保您的資料只能存取您的特定工作。您現有的 EMR Serverless 存取控制項和權限會繼續套用,因此受表格或 Lake Formation 原則管理的資料保持完全保護。 為了增強安全性,EMR Serverless 使用服務擁有的角色來處理中間資料處理,而不是您工作的執行角色,從而防止權限提升或未經授權的跨帳戶存取權。若任何安全檢查失敗,您的任務將立即停止,以確保資料始終受到保護。