Amazon EMR 功能

易於使用

Amazon EMR 簡化了大數據環境與應用程式的建構及營運。相關的 EMR 功能包括輕鬆佈建、受管擴展和重新設定叢集,以及用於協作開發的 EMR Studio。

您只需幾分鐘就可以啟動 EMR 叢集。您不必擔心基礎架構佈建、叢集設定、組態或調校的工作。EMR 會處理這些工作,讓您的團隊能夠專注於開發與眾不同的大數據應用程式。

您可以使用 EMR 受管擴展政策輕鬆地設定擴展和縮減,並且讓 EMR 叢集自動管理運算資源,以滿足您的使用量和效能需求。這可提高叢集利用率並節省成本。

是一種整合式開發環境 (IDE),可讓資料科學家和資料工程師開發、視覺化和偵錯以 R、Python、Scala 和 PySpark 編寫的資料工程和資料科學應用程式。EMR Studio 提供全受管 Jupyter Notebooks,以及 Spark UI 和 YARN Timeline Service 等工具來簡化偵錯程序。

僅需按一下,即可針對 YARN、HDFS、Apache Spark、Apache HBase 和 Apache Hive 等多主機應用程式設定高可用性。透過在 EMR 中啟用多主機支援,EMR 將可設定這些應用程式以實現高可用性,並且在發生故障時自動容錯轉移到備用主機,讓您的叢集運作不會受到中斷,並將主節點放在不同機架中以減少同時發生故障的風險。監控主機以偵測故障,並且在偵測到問題時,自動佈建新主機並將其新增至叢集。

自動調整叢集大小,以盡可能低的成本獲得最佳效能。透過 EMR 受管擴展,您可以為叢集指定最小和最大運算限制,Amazon EMR 會自動調整叢集的大小,以獲得最佳效能和資源使用率。EMR 受管擴展會不斷地對與叢集上執行的工作負載關聯的關鍵指標進行採樣。

您現在可以修改在 EMR 叢集上執行的應用程式組態,包括 Apache Hadoop、Apache Spark、Apache Hive 和 Hue,無須重新啟動叢集。EMR 應用程式重新設定功能可讓您即時修改應用程式,無須關閉或重新建立叢集。Amazon EMR 將會套用您的新組態,然後妥善地重新啟動重新設定的應用程式。您可以透過主控台、軟體開發套件或 CLI 來套用組態。

Elastic

使用 Amazon EMR 可讓您輕鬆快速地佈建所需的容量,還有自動或手動新增和移除容量。在處理不確定或者不能預料的要求時,這非常有用。例如,如果大多數的處理發生在夜間,那麼,白天可能需要 100 個執行個體,而夜間則需要 500 個執行個體。另一種情況是,您可能在短期內需要龐大的容量。使用 Amazon EMR,您可以迅速地佈建數百或者數千個執行個體、自動擴展以符合運算需求,並在工作完成後關閉叢集,這樣就不用為閒置的容量付費。

叢集圖形

新增或移除容量時有兩個主要選項:

如果您需要更多容量,可以輕鬆地啟動新的叢集,並在不再需要時將其終止。您擁有的叢集數量沒有限制。如果您有多個使用者或應用程式,可以使用多個叢集。例如,您可以將輸入資料存放在 Amazon S3 中,並為需要處理資料的每個應用程式啟動一個叢集。一個叢集可以針對 CPU 進行優化,第二個叢集可針對儲存進行優化,以此類推。

透過 Amazon EMR,可輕鬆使用 EMR 受管擴展自動擴展手動調整執行中的叢集大小。您可能想要擴展叢集以暫時為叢集增加更多處理能力,或在有閒置容量時縮減叢集以節省成本。例如,一些客戶會在處理批次工作時在叢集新增數以百計的執行個體,並在處理完成時移除這些額外新增的執行個體。當新增執行個體到叢集時,EMR 現在可以在佈建的容量可用時立即使用該容量。EMR 可在縮減時主動選擇閒置的節點,以降低對執行中任務的影響。

低成本

Amazon EMR 旨在降低處理大量資料的成本。有助於降低成本的幾個功能,包括較低的每秒定價、Amazon EC2 Spot 執行個體整合、Amazon EC2 預留執行個體整合、彈性和 Amazon S3 整合。

Amazon EMR 定價依每秒計費且需支付一分鐘最低費用,小型執行個體的每執行個體小時起價為 0.015 USD (每年 131.40 USD)。請參閱定價部分,以了解詳細資訊。

Amazon EC2 Spot 執行個體價格會隨著執行個體的供需而浮動,但您支付的價格不會超過您所指定的最高價格。Amazon EMR 可讓您輕鬆使用 Spot 執行個體,以便可以同時節省時間和金錢。Amazon EMR 叢集包括執行 HDFS 的「核心節點」和不執行 HDFS 的「任務節點」;任務節點非常適合 Spot 執行個體,因為 Spot 價格上漲的話,您會失去這些執行個體,但不會損失 HDFS 中存放的資料。(進一步了解關於核心節點和任務節點的資訊)。透過執行個體機群、Spot 執行個體的分配策略、EMR 受管擴展和更多多樣化選項的組合,您現在可以針對彈性和成本最佳化 EMR。若要進一步了解,請閱讀我們的部落格

EMR 檔案系統 (EMRFS) 可讓 EMR 叢集有效且安全地將 Amazon S3 作為 Hadoop 物件存放區使用。您可以將資料存放在 Amazon S3 中,並使用多個 Amazon EMR 叢集處理同一個資料集。每個叢集都可以針對特定的工作負載進行優化,這比單一叢集為多個要求不同的工作負載提供服務更有效率。例如,您可能有一個針對 I/O 優化的叢集,而另一個叢集則是針對 CPU 進行優化,這兩個叢集都在 Amazon S3 中處理相同的資料集。此外,將輸入與輸出資料存放在 Amazon S3 中,還可以在不再需要的時候關閉叢集。

EMRFS 在 Amazon S3 讀寫方面擁有極高效能,支援使用 AWS Key Management Service (KMS) 或客戶管理的金鑰進行 S3 伺服器端或 S3 用戶端加密,同時提供可選的一致性檢視,用於檢查在中繼資料中追蹤之物件的清單和先寫後讀一致性。同時,Amazon EMR 叢集可同時使用 EMRFS 和 HDFS,如此您就不須在叢集上的儲存和 Amazon S3 之間作選擇。

您可以使用 AWS Glue Data Catalog 做為受管中繼資料儲存庫,存放 Apache Spark 和 Apache Hive 的外部資料表中繼資料。除此之外,還提供自動結構描述探索和結構描述版本歷史記錄。這可讓您在叢集外輕鬆地保存 Amazon S3 外部表格的中繼資料。

靈活的資料存放區

使用 Amazon EMR,您可以利用多種資料存放區,包括 Amazon S3、Hadoop 分散式檔案系統 (HDFS) 和 Amazon DynamoDB。

靈活的資料存放區圖形

Amazon S3 是具有高耐用性、可擴展性、安全、快速且經濟實惠的儲存服務。使用 EMR 檔案系統 (EMRFS),Amazon EMR 可以有效率且安全地將 Amazon S3 作為 Hadoop 物件存放區使用。Amazon EMR 對 Hadoop 進行許多改良,可讓您順暢地處理 Amazon S3 中存放的大量資料。而且 EMRFS 還可以提供一致的檢視,用於檢查 Amazon S3 中物件的清單和先寫後讀一致性。EMRFS 支援 S3 伺服器端或 S3 用戶端加密,以處理加密的 Amazon S3 物件,您可以使用 AWS Key Management Service (KMS) 或自訂的金鑰供應商。

啟動叢集時,Amazon EMR 會將資料從 Amazon S3 串流到叢集中的每個執行個體,並立即進行處理。將資料存放在 Amazon S3 中並使用 Amazon EMR 進行處理的一個優點是:您可以使用多個叢集處理相同的資料。例如,您可能有一個針對記憶體進行優化的 Hive 開發叢集和一個針對 CPU 進行優化的 Pig 生產叢集,兩個叢集都使用同一個輸入資料集。

HDFS 是 Hadoop 檔案系統。Amazon EMR 的目前拓撲將它的執行個體分成 3 個邏輯執行個體群組:Master Group,執行 YARN Resource Manager 和 HDFS Name Node Service;Core Group,執行 HDFS DataNode Daemon 和 YARN Node Manager 服務;及 Task Group,執行 YARN Node Manager 服務。Amazon EMR 會在與 Core Group 中執行個體關聯的儲存上安裝 HDFS。

每個 EC2 執行個體都有固定的儲存數量 (稱為執行個體存放區),與執行個體連接。您也可以透過將 Amazon EBS 磁碟區新增到執行個體的方式,自訂執行個體上的儲存。Amazon EMR 可讓您新增一般用途 (SSD)、佈建 (SSD) 和磁帶磁碟區類型。新增到 EMR 叢集的 EBS 磁碟區,在叢集停止之後無法保存資料。您終止叢集之後,EMR 會自動清理磁碟區。

您也可以使用 Amazon EMR 安全組態,或使用 Hadoop 金鑰管理伺服器手動建立 HDFS 加密區,以啟用 HDFS 的完整加密。 指定 AWS KMS 作為金鑰供應商時,您可以使用安全組態選項加密 EBS 根裝置和儲存磁碟區。如需詳細資訊,請參閱本機磁碟加密

Amazon DynamoDB 是一種全受管的 NoSQL 資料庫服務。Amazon EMR 與 Amazon DynamoDB 直接整合,因此您可以迅速且有效率地處理 Amazon DynamoDB 中存放的資料,並在 Amazon EMR 中的 Amazon DynamoDB、Amazon S3 和 HDFS 間傳輸資料。

您還可以使用 Amazon Relational Database Service (一種可在雲端中輕鬆設定、操作和擴展關聯式資料庫的 Web 服務)、Amazon Glacier (一種成本極低的儲存服務,為資料存檔和備份提供安全且耐久的儲存) 以及 Amazon Redshift (一種快速、全受管的 PB 級資料倉儲服務)。 AWS Data Pipeline 是一種 Web 服務,可協助您可靠地處理資料,並以指定的時間間隔在不同 AWS 運算與儲存服務 (包括 Amazon EMR) 以及現場部署資料來源之間移動資料。

使用您喜愛的開放原始碼應用程式

在 Amazon EMR 上使用版本控制發行功能,您可以輕鬆地在 EMR 叢集選取和使用最新的開放原始碼專案,包括 Apache Spark 和 Hadoop 生態系統中的應用程式。Amazon EMR 會安裝和設定軟體,所以您可以將更多時間用於提升資料的價值,無須擔心基礎設施和管理任務。

Amazon EMR 6.x Releases 中的應用程式版本圖形

大數據工具

Amazon EMR 支援各種強大、經過驗證的 Hadoop 工具,例如 Apache Spark、Apache Hive、Presto 和 Apache HBase。資料科學家使用 EMR 可執行深度學習和機器學習工具,例如 TensorFlow、Apache MXNet,而透過啟動動作,則可新增使用案例特定的工具和程式庫。資料分析師使用 EMR Studio、Hue 和 EMR Notebooks 可進行互動式開發,撰寫 Apache Spark 任務,以及將 SQL 查詢提交至 Apache Hive 和 Presto。資料工程師使用 EMR 進行資料管道開發和資料處理,並使用 Apache Hudi 簡化增量資料管理和需要記錄級插入、更新和刪除操作的資料隱私權使用案例。

流行的 Hadoop 應用程式圖形

Apache Spark 是 Hadoop 生態系統中的引擎,可以快速處理龐大的資料集。Apache Spark 使用記憶體內容錯恢復分散式資料集 (RDD) 和有向非循環圖 (DAG),來定義資料轉換。Spark 還包括 Spark SQL、Spark 串流、MLlib 和 GraphX。了解什麼是 Spark,以及進一步了解 EMR 上的 Spark

Apache Flink 是一種串流資料流引擎,可簡化對高輸送量資料來源執行即時串流處理的任務。Apache Flink 為異常事件、僅處理一次的語意、反壓控制,以及針對寫入串流與批次應用程式最佳化的 API,提供了事件時間語意支援。了解什麼是 Flink,以及進一步了解 EMR 上的 Flink

TensorFlow 是一個開放原始碼符號數學資料庫,適用於機器智慧和深度學習應用程式。TensorFlow 將多個機器學習和深度學習模型及演算法結合在一起,可以針對許多不同的使用案例,進行訓練和執行深度神經網絡。進一步了解 EMR 上的 TensorFlow

Apache Hudi 是一個開放原始碼資料管理框架,可用於簡化增量資料處理和資料管道開發。Apache Hudi 可讓您在 Amazon S3 中以記錄層級管理資料簡化變更資料擷取 (CDC) 和串流資料擷取,並提供框架以處理需要記錄層級更新和刪除的資料隱私權使用案例。進一步了解 Amazon EMR 上的 Apache Hudi

Apache Hive 是在 Hadoop 上執行的一種開放原始碼資料倉儲和分析套件。Hive 是用 Hive QL (一種以 SQL 為基礎的語言) 進行操作,這可讓使用者建構、摘要和查詢資料。Hive QL 的功能超過標準 SQL,新增 map/reduce 函數的第一級支援及複雜且可擴展的使用者定義資料類型,如 JSON 與 Thrift。這個功能讓您能夠處理複雜和非結構化的資料來源,例如,文字文件和日誌檔。Hive 支援透過以 Java 編寫的使用者定義函數進行使用者擴展。Amazon EMR 對 Hive 進行了許多改進,包括直接整合 Amazon DynamoDB 和 Amazon S3。例如,您可以使用 Amazon EMR 自動從 Amazon S3 載入表格分區、無須使用暫存檔案即可將資料寫入 Amazon S3 中的表格,而且還可存取 Amazon S3 中的資源,如適用於自訂 map/reduce 操作的指令碼及其他程式庫。了解什麼是 Hive,並進一步了解 EMR 上的 Hive

Presto 是一種開放原始碼的分散式 SQL 查詢引擎,已針對低延遲和資料臨機操作分析進行最佳化。它支援 ANSI SQL 標準,包含複雜查詢、彙總、加入 (join) 和視窗函數。Presto 可以處理來自多個資料來源的資料,而這些資料來源包含 Hadoop 分散式檔案系統 (HDFS) 和 Amazon S3。了解什麼是 Presto,以及進一步了解 EMR 上的 Presto

Apache Phoenix 透過 Apache HBase 中存放的資料來啟用低延遲的 SQL 及 ACID 交易能力。您可以輕鬆建立次要索引以達成額外效能,並針對相同的底層 HBase 資料表,建立不同的檢視。進一步了解 EMR 上的 Phoenix。

Apache HBase 是一種仿效 Google BigTable 的開放原始碼、非關聯式、分散式資料庫。Apache HBase 是 Apache 軟體基金會 Hadoop 專案開發的一部分,在 Hadoop 分散式檔案系統 (HDFS) 上執行,為 Hadoop 提供與 BigTable 類似的功能。HBase 為您提供一種可儲存大量疏鬆資料的容錯、高效率方法,此方法採用以欄為基礎的壓縮和儲存方式。此外,因為 HBase 將資料快取在記憶體內,所以能夠提供快速資料查詢。HBase 在連續寫入操作方面已經過優化,且批次插入、更新和刪除等操作的效率很高。HBase 可與 Hadoop 無縫搭配,不但共享檔案系統,且做為 Hadoop 工作的直接輸入和輸出。HBase 也與 Apache Hive 整合,對 HBase 表啟用類似 SQL 的查詢,與以 Hive 為基礎的表格結合,以及支援 Java 資料庫連接 (JDBC)。透過 Amazon EMR,您可以使用 S3 作為 HBase 的資料存放區,以降低成本和減少操作複雜性。如果使用 HDFS 做為資料存放區,您可以將 HBase 備份到 S3,並且從先前所建立的備份恢復。了解什麼是 HBase,並進一步了解 EMR 上的 HBase

EMR Studio 是一種整合式開發環境 (IDE),可讓資料科學家和資料工程師開發、視覺化和偵錯以 R、Python、Scala 和 PySpark 編寫的資料工程和資料科學應用程式。EMR Studio 提供全受管 Jupyter Notebooks,以及 Spark UI 和 YARN Timeline Service 等工具來簡化偵錯程序。

Hue 是適用於 Hadoop 的開放原始碼使用者界面,可讓您更輕鬆地執行和開發 Hive 查詢式、管理 HDFS 中的檔案、執行和開發 Pig 指令碼,以及管理資料表。EMR 上的 Hue 也整合了 Amazon S3,因此您可以直接查詢 S3,並且在 HDFS 和 Amazon S3 之間輕鬆地傳輸檔案。進一步了解 Hue 和 EMR

Jupyter Notebook 是開放原始碼 Web 應用程式,您可以用來建立和共用包含即時程式碼、方程式、視覺化和敘述文字的文件。JupyterHub 可讓您託管單一使用者 Jupyter Notebook 伺服器的多個執行個體。使用 JupyterHub 來建立 EMR 叢集時,EMR 會在叢集的主節點上建立 Docker 容器。JupyterHub、Jupyter 必需的所有元件和 Sparkmagic 會在容器內執行。

Apache Zeppelin 是一種開放原始碼的 GUI,可針對使用 Spark 的資料探索,來建立互動和協作式的筆記本。您可以使用 Scala、Python、SQL (使用 Spark SQL) 或 HiveQL 來操控資料和快速將結果視覺化。Zeppelin 筆記本可以在數個使用者之間共用,而視覺化項目可發佈到外部儀表板。進一步了解 EMR 上的 Zeppelin。

Apache Oozie 是一種 Hadoop 工作流程排程器,您可以在其中建立動作的有向無環圖 (DAG)。此外,您也能輕鬆地藉由動作或時間來觸發 Hadoop 工作流程。進一步了解 EMR 上的 Oozie。 AWS Step Functions 可讓您將無伺服器工作流程自動化新增至應用程式。您的工作流程步驟可以在任何地方執行,包括在 AWS Lambda 函數上、Amazon Elastic Compute Cloud (EC2) 上或內部部署。進一步了解 EMR 上的 Step Functions。

EMR 還支援其他各種常用的應用程式和工具,例如 R、Apache Pig (資料處理和 ETL)、Apache Tez (複雜的 DAG 執行)、Apache MXNet (深度學習)、Ganglia (監控)、Apache Sqoop (關聯式資料庫連接器) 和 HCatalog (資料表和儲存管理) 等。Amazon EMR 團隊負責維護引導動作的開放原始碼儲存庫,該儲存庫可用來安裝其他軟體、設定叢集,或者在編寫您自己的引導動作時做為範例使用。

資料存取控制

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

與 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。

與 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

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

一致性混合體驗

AWS Outposts 是一款全受管服務,能將 AWS 基礎設施、AWS 服務、API 和工具擴展到幾乎任何資料中心、主機代管空間或內部部署設施,以提供真正的一致性混合體驗。 AWS Outposts 上的 Amazon EMR 可讓您使用與 EMR 相同的 AWS 管理主控台、軟體開發套件 (SDK) 以及命令列介面 (CLI),來部署並管理您資料中心裡的 EMR 叢集。

其他功能

您可以根據應用程式的要求,選擇要在叢集中佈建的 EC2 執行個體類型 (標準型、記憶體增強型、CPU 增強型、高 I/O 等等)。您擁有每個執行個體的根存取權限,可完全自訂叢集以滿足您的需求。 進一步了解支援的 Amazon EC2 執行個體類型。Amazon EMR 現在為 Graviton2 型執行個體上的 Spark 工作負載降低了高達 30% 的成本,提高了高達15% 的效能。透過我們的部落格進一步了解。

您可以在 Amazon Virtual Private Cloud (VPC) 中啟動叢集,這是一種邏輯上隔離的 AWS 雲端部分。您可以完全掌控虛擬聯網環境,包括選擇自己的 IP 地址範圍、建立子網路,以及配置路由表和網路閘道。 進一步了解 Amazon EMR 和 Amazon VPC。

啟用叢集上的偵錯後,Amazon EMR 會將日誌檔封存至 Amazon S3,然後製作這些檔案的索引。您之後就能使用主控台的圖形界面,以直覺的方式瀏覽日誌及檢視任務歷史記錄。 進一步了解偵錯 Amazon EMR 任務。

您可以使用 AWS Identity and Access Management (IAM) 工具 (如 IAM 使用者和角色) 控制存取和許可。例如,您可以為某些使用者提供叢集的讀取存取,但不提供寫入存取。另外,您可以使用 Amazon EMR 安全組態設定各種靜態和動態加密選項,包含 Amazon S3 加密和 Kerberos 身分驗證支援。 進一步了解叢集的存取控制Amazon EMR 加密選項

您可以使用 Amazon CloudWatch 監控自訂 Amazon EMR 指標,如執行中 map 和 reduce 任務的平均數量。您還可以在這些指標上設定警示。 進一步了解監控 Amazon EMR 叢集。

您可以使用引導操作或執行 Amazon Linux 的自訂 Amazon Machine Image (AMI) 在叢集上安裝額外的軟體。引導操作指的是 Amazon EMR 啟動叢集時在叢集節點上執行的指令碼。它們會在啟動 Hadoop 和節點開始處理資料前執行。還能在自訂 Amazon Linux AMI 預先載入和使用軟體。 進一步了解 Amazon EMR 引導動作自訂 Amazon Linux AMI

您可以使用 Amazon CloudWatch Events 中的 Amazon EMR 事件類型,回應 Amazon EMR 叢集中的狀態變更。使用可快速設定的簡單規則,讓您比對事件並將其路由到 Amazon SNS 主題、AWS Lambda 函數、Amazon SQS 佇列等等。 進一步了解 Amazon EMR 叢集中的事件。

您可以迅速地將大量資料從 Amazon S3 移到 HDFS,從 HDFS 移到 Amazon S3,並使用 Amazon EMR 的 S3DistCp 在 Amazon S3 儲存貯體之間進行移動。S3DistCp 是開放原始碼工具 Distcp 的擴展,它可使用 MapReduce 有效率地移動大量資料。 進一步了解 S3DistCp

您可以使用 AWS Data Pipeline 排定各種與 Amazon EMR 相關的重複發生工作流程。AWS Data Pipeline 是一種 Web 服務,可協助您在指定的間隔,可靠地在不同 AWS 運算與儲存服務以及現場部署資料來源之間移動資料。 進一步了解 Amazon EMR 和 AWS Data Pipeline。

編寫 Java 程式、針對您希望使用的 Hadoop 版本進行編譯並上傳到 Amazon S3。然後,您就可以使用 Hadoop JobClient 界面將 Hadoop 任務提交到叢集。 進一步了解使用 Amazon EMR 進行自訂 JAR 處理。

使用 Apache MXNet 等常用的深度學習架構定義、訓練和部署深度神經網路。您可以在 Amazon EMR 叢集使用這些架構搭配 GPU 執行個體。 進一步了解 Amazon EMR 上的 MXNet。