Amazon EMR架構和服務層 - Amazon EMR

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

Amazon EMR架構和服務層

Amazon EMR服務架構由數個層組成,每個層都為叢集提供特定功能。此章節概略說明各個層級和元件。

儲存

儲存層包含與您叢集搭配使用的不同檔案系統。有多種不同類型的儲存選項,如下所示。

Hadoop 分散式檔案系統 (HDFS)

Hadoop 分散式檔案系統 (HDFS) 是 Hadoop 的分散式可擴展檔案系統。HDFS 會將其存放的資料分散至叢集中的執行個體,在不同執行個體上存放多個資料複本,以確保在個別執行個體失敗時不會遺失資料。HDFS 是暫時性儲存,會在您終止叢集時回收。HDFS 適用於在 MapReduce 處理期間快取中繼結果,或具有大量隨機 I/O 的工作負載。

如需詳細資訊,請參閱本指南Amazon 中的執行個體儲存選項和行為 EMR中的 或前往 Apache Hadoop 網站上的HDFS使用者指南

EMR 檔案系統 (EMRFS)

使用EMR檔案系統 (EMRFS),Amazon EMR延伸 Hadoop 以新增直接存取 Amazon S3 中儲存資料的功能,如同檔案系統一樣,例如 HDFS。您可以使用 HDFS或 Amazon S3 作為叢集中的檔案系統。Amazon S3 最常用於儲存輸入和輸出資料,而中繼結果則儲存在 中HDFS。

本機檔案系統

本機檔案系統是指與本機連接的磁碟。當您建立 Hadoop 叢集時,每個節點都是從 Amazon EC2執行個體建立的,該執行個體隨附稱為執行個體存放區的預先設定磁碟儲存區塊。執行個體存放磁碟區上的資料只會在其 Amazon EC2執行個體的生命週期內持續存在。

叢集資源管理

資源管理層負責管理叢集資源,並排定處理資料任務的時程。

依預設,Amazon EMR會使用 YARN(還有另一個資源協商器),這是 Apache Hadoop 2.0 中引入的元件,以集中管理多個資料處理架構的叢集資源。不過,Amazon 中還有其他架構和應用程式EMR不會YARN用作資源管理員。Amazon 在每個節點上EMR也有代理程式,可管理YARN元件、保持叢集運作狀態,並與 Amazon 通訊EMR。

由於 Spot 執行個體通常用於執行任務節點,因此 Amazon EMR具有排程YARN任務的預設功能,因此當在 Spot 執行個體上執行的任務節點終止時,執行中的任務不會失敗。Amazon 會允許應用程式主要程序僅在核心節點上執行,藉此EMR實現此目標。應用程式主程序會控制執行中的作業,而且需要在作業生命週期內保持活動狀態。

Amazon 5.19.0 版及更新EMR版本使用內建YARN節點標籤功能來達成此目標。(較早版本使用代碼修補程式)。yarn-sitecapacity-scheduler組態分類中的屬性預設為 ,以便YARN容量排程器和公平排程器利用節點標籤。Amazon EMR會自動使用CORE標籤標記核心節點,並設定 屬性,以便應用程式主檔只會排程在具有CORE標籤的節點上。手動修改紗線網站和容量排程器組態分類中的相關屬性,或直接修改相關XML檔案,可能會破壞此功能或修改此功能。

資料處理框架

資料處理架構層是用於處理和分析資料的引擎。有許多架構可在 上執行,YARN或具有自己的資源管理。不同架構適用於不同類型的處理需求 (例如批次、互動式、記憶體內、串流等等)。您選擇的架構取決於您的使用案例。這會影響應用程式層提供使用的語言和界面,應用程式層與您想處理的資料互動。適用於 Amazon 的主要處理架構EMR為 Hadoop MapReduce 和 Spark。

Hadoop MapReduce

Hadoop MapReduce 是分散式運算的開放原始碼程式設計模型。它可簡化撰寫平行分散式應用程式的程序,方法是處理所有邏輯,同時提供 Map 和 Reduce 函數。Map 函數會將資料映射為名為中繼結果的金鑰值對集。Reduce 函數會結合中繼結果、套用額外的演算法,並產生最終輸出。有多個架構可用於 MapReduce,例如 Hive,它會自動產生映射和減少程式。

如需詳細資訊,請參閱 Apache Hadoop Wiki 網站上的 Map 和 Reduce 操作實際上的執行方式

Apache Spark

Spark 是一個叢集架構和程式設計模型,可處理大數據工作負載。與 Hadoop 一樣 MapReduce,Spark 是開放原始碼的分散式處理系統,但使用定向非循環圖形執行計畫和記憶體內快取資料集。當您在 Amazon 上執行 Spark 時EMR,您可以使用 EMRFS 直接存取 Amazon S3 中的資料。Spark 支援多個互動式查詢模組,例如 Spark SQL。

如需詳細資訊,請參閱 Amazon 版本指南 中的 Amazon EMR叢集上的 Apache Spark EMR

應用程式與程式

Amazon EMR支援許多應用程式,例如 Hive、Pig 和 Spark Streaming 程式庫,以提供使用高階語言來建立處理工作負載、利用機器學習演算法、製作串流處理應用程式和建置資料倉儲等功能。此外,Amazon EMR也支援具有自己的叢集管理功能的開放原始碼專案,而不是使用 YARN。

您可以使用各種程式庫和語言,與您在 Amazon 中執行的應用程式互動EMR。例如,您可以將 Java、Hive 或 Pig 與 MapReduce Spark Streaming、Spark MLlib、 SQL和 GraphX 與 Spark 搭配使用。

如需詳細資訊,請參閱 Amazon EMR版本指南