了解如何建立和使用 Amazon EMR 叢集 - Amazon EMR

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

了解如何建立和使用 Amazon EMR 叢集

本主題提供 Amazon EMR 叢集的概觀,包括如何將工作提交到叢集,該資料的處理方式,以及該叢集在處理期間經歷的各種狀態。

熟悉叢集和節點

Amazon EMR 的中心元件是叢集。叢集是 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的集合。叢集中的每個執行個體稱為節點。每個節點擁有在叢集內的一個角色,也就是節點類型。Amazon EMR 也在每個節點類型上安裝其他軟體元件,使每個節點在分散式應用程式 (如 Apache Hadoop) 中發揮作用。

Amazon EMR 中的節點類型如下所示:

  • 主節點:此種節點會執行軟體元件,統籌其他節點之間的資料與任務分發以進行處理,藉此管理叢集。主節點會追蹤任務的狀態,並監控叢集運作狀況。每個叢集都會有主節點,因此您可以建立只有主節點的單一節點叢集。

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

  • 任務節點:一種節點,內含軟體元件,這些元件只會執行任務,而不會在 HDFS 中儲存資料。任務節點是選用的。

將工作提交到叢集

在 Amazon EMR 上執行叢集時,有幾個選項可讓您指定需要完成之工作的方式。

  • 提供要透過函式完成的完整工作定義,而該函式已在叢集建立時指定為步驟。此定義通常會用於處理一組資料量的叢集,然後在處理完成時終止。

  • 建立長時間執行的叢集,並使用 Amazon EMR 主控台、Amazon EMR API 或 AWS CLI 來提交步驟,其中可能包含一或多個任務。如需詳細資訊,請參閱將工作提交至 Amazon EMR 叢集

  • 建立叢集,並依需要使用 SSH 來連線到主節點和其他節點,並使用已安裝應用程式提供的介面來執行任務、提交查詢,不論是以指令碼撰寫或是以互動的方式進行。如需詳細資訊,請參閱 Amazon EMR 版本指南

處理資料

啟動您的叢集時,您可以選擇要安裝的架構和應用程式來處理您的資料處理需求。若要在 Amazon EMR 叢集中處理資料,您可以將作業或查詢直接提交給已安裝的應用程式,或是在叢集中執行步驟

將作業直接提交到應用程式

您可以提交作業並與在 Amazon EMR 叢集中安裝的軟體直接互動。若要這樣做,您通常會透過安全連線連接到主節點並存取可用於在叢集上直接執行之軟體的介面和工具。如需詳細資訊,請參閱連線至 Amazon EMR 叢集

執行步驟來處理資料

您可以將一個或多個排定順序的步驟提交到 Amazon EMR 叢集。每個步驟是工作的單位,其中包含透過叢集上安裝的軟體來操作資料進行處理的指示。

下面是使用四個步驟的程序:

  1. 提交輸入資料集以進行處理。

  2. 使用 Pig 程式以處理第一步的輸出。

  3. 使用 Hive 程式以處理第二個輸入資料集。

  4. 寫入輸出資料集。

一般而言,在 Amazon EMR 中處理資料時,輸入即為資料,這些資料是在您所選擇的底層檔案系統 (例如 Amazon S3 或 HDFS) 中以檔案形式所儲存的。此資料會在處理序列中從一個步驟傳遞到下一個步驟。最後步驟會將輸出資料寫入到指定的位置 (如 Amazon S3 儲存貯體)。

在下列序列中執行步驟:

  1. 提交請求以開始處理步驟。

  2. 所有步驟的狀態會設定為 PENDING (待定)

  3. 序列中的第一個步驟開始時,其狀態會變更為 RUNNING (執行中)。其他步驟的狀態則會保持為 PENDING (待定)

  4. 第一個步驟完成之後,其狀態會變更為 COMPLETED (已完成)

  5. 序列中的下一個步驟開始時,其狀態會變更為 RUNNING (執行中)。該步驟完成時,其狀態會變更為 COMPLETED (已完成)

  6. 每個步驟會重複此模式,直到所有步驟都完成和結束處理。

下圖代表步驟處理時的步驟序列和步驟的狀態變更。

顯示不同叢集步驟狀態的 Amazon EMR 序列圖。

如果步驟在處理過程中失敗,其狀態會變更為 FAILED。您可以決定每個步驟之後會發生什麼事情。根據預設,此序列中剩下的任何步驟都會設定為 CANCELLED,如果前一個步驟失敗,則不會執行。您也可以選擇忽略失敗,允許剩下的步驟繼續執行,或者立刻終止叢集運作。

下圖代表步驟在處理期間故障時的步驟序列和狀態的預設變更。

Amazon EMR 的序列圖會顯示當之前的叢集步驟失敗時,後續步驟會發生什麼情況。

了解叢集生命週期

成功的 Amazon EMR 叢集會遵循此程序:

  1. Amazon EMR 會先根據您的規格,為每個執行個體叢集內的 EC2 執行個體進行佈建。如需詳細資訊,請參閱設定 Amazon EMR 叢集硬體和聯網。針對所有的執行個體,Amazon EMR 會使用 Amazon EMR 的預設 AMI,或是您所指定的自訂 Amazon Linux AMI。如需詳細資訊,請參閱使用自訂 AMI 為 Amazon EMR 叢集組態提供更多彈性。在此階段,叢集狀態為 STARTING

  2. Amazon EMR 會在每個執行個體上執行您所指定的引導操作。您可以使用引導操作來安裝自訂的應用程式,並執行您需要的自訂操作。如需詳細資訊,請參閱建立引導動作以使用 Amazon EMR 叢集安裝其他軟體。在此階段,叢集狀態為 BOOTSTRAPPING

  3. Amazon EMR 會安裝您在建立叢集時所指定的原生應用程式,例如,Hive、Hadoop、Spark 和其他應用程式。

  4. 引導操作成功完成、且原生應用程式安裝完成之後,叢集狀態會變成 RUNNING。此時,您可以連線到叢集執行個體,而叢集會循序執行您在叢及建立時所指定的任何步驟。您可以提交其他額外步驟,該步驟將在任何先前步驟完成之後開始執行。如需詳細資訊,請參閱將工作提交至 Amazon EMR 叢集

  5. 在步驟執行成功之後,叢集就會進入 WAITING 狀態。如果叢集已設定成在最後步驟完成後自動終止,則叢集會進入 TERMINATING 狀態,然後進入 TERMINATED 狀態。如果叢集設定為等待,則必須在不再需要時手動將其關閉。手動關閉叢集之後,它將進入 TERMINATING 狀態,然後進入 TERMINATED 狀態。

叢集生命週期中的故障會造成 Amazon EMR 終止該叢集及其所有執行個體,除非您啟用終止保護。如果因失敗而終止叢集,則叢集上的任何儲存資料都將遭到刪除,而且叢集將設為 TERMINATED_WITH_ERRORS 狀態。如果已啟用終止保護,則您可以從叢集上擷取資料,並且移除終止保護,並接著終止叢集。如需詳細資訊,請參閱使用終止保護來保護 Amazon EMR 叢集免於意外關閉

下圖代表叢集的生命週期,以及生命週期的每個階段會與特定叢集狀態的對應。

Amazon EMR 的圖表會顯示叢集生命週期,以及生命週期的每個階段如何映射到特定叢集狀態。