一般問題

問:什麼是 Amazon EMR?

Amazon EMR 是一種能讓企業、研究人員、資料分析師和開發人員輕鬆且經濟實惠地處理大量資料的 Web 服務。此服務採用 Web 規模的 Amazon Elastic Compute Cloud (Amazon EC2) 和 Amazon Simple Storage Service (Amazon S3) 基礎設施上執行的託管 Hadoop 框架。

問:Amazon EMR 可以用來做什麼?

使用 Amazon EMR 時,您可以視需要即時佈建所需的容量,以執行資料密集型任務的應用程式,例如,Web 索引編列、資料探勘、日誌檔案分析、機器學習、財務分析、科學模擬和生物資訊學研究等。Amazon EMR 讓您可以專注於處理或分析資料,無須擔心執行開放原始碼大數據應用程式叢集費時的設定、管理或調校,也無須擔心所需要的運算容量。

Amazon EMR 很適合用來解決需要快速、高效率處理大量資料的問題。Web 服務界面可讓您建置處理工作流程,並以程式設計方式監控叢集的執行進度。此外,您可以使用 AWS 管理主控台上簡單的 Web 界面啟動叢集,並監控對 Amazon EC2 執行個體叢集進行的處理密集型運算。

問:誰可以使用 Amazon EMR?

需要以簡單的方式存取強大資料分析功能的任何人都能使用 Amazon EMR。您不需要任何軟體開發經驗,就可以試用開發人員指南AWS 大數據部落格提供的一些範例應用程式。

問:使用 Amazon EMR 可以做到哪些之前無法做到的事情?

Amazon EMR 可大幅降低費時的 Hadoop 叢集設定、管理或調校,也無須擔心所需要的運算容量。您可以即時擴充大型 Hadoop 叢集,並在幾分鐘內就開始處理,無須等待數小時或數天。除非您另行指定,否則叢集會在處理完成後自動終止,您就不必為不再需要的資源支付費用。

您可以使用此服務快速執行應用程式的資料密集型任務,例如,Web 索引編列、資料探勘、日誌檔案分析、機器學習、財務分析、科學模擬及生物資訊學研究等。

身為軟體開發人員,您還可以開發和執行更為複雜的應用程式,以新增排程、工作流程、監控等功能或其他功能。

問:什麼是 Apache Spark?

Apache SparkTM 是用於大數據工作負載的開放原始碼、分散式處理系統。它採用記憶體內快取並優化查詢執行,以對任何規模的資料進行快速地分析查詢。Amazon EMR 是在雲端部署 Apache Spark 的最佳位置,因為它將商業 Spark 分發的整合和測試精確性和雲端的規模、簡便性和經濟效益結合在一起。您可以在最短的時間內啟動 Spark 叢集,無須進行節點佈建、叢集設定、Spark 組態或叢集調校。EMR 採用 Amazon EMR runtime for Apache Spark,這是適用於 Apache Spark 的效能最佳化執行時間環境,預設會在 Amazon EMR 叢集上啟用。與沒有 EMR 執行時間的叢集相比,Amazon EMR runtime for Apache Spark 速度快 3 倍以上,且與標準 Apache Spark 具有 100% API 相容性。進一步了解 Spark Spark on Amazon EMR

問:什麼是 Presto?

Presto 是全新設計的開放原始碼分散式 SQL 查詢引擎,可對任何規模的資料進行快速的分析查詢。您可以使用 Amazon EMR 在最短的時間內啟動 Presto 叢集,無須進行節點佈建、叢集設定、Presto 組態或叢集調校。EMR 可讓您在最短的時間內佈建一個、數百個或數千個運算執行個體。Presto 擁有兩個社群專案 – PrestoDB 和 PrestoSQL。Amazon EMR 支援這兩種專案。進一步了解 Presto Presto on Amazon EMR

叢集

問:什麼是 Amazon EMR 叢集?

Amazon EMR 從以前就將 Amazon EMR 叢集 (以及指派給該叢集的所有處理步驟) 稱為「叢集」。每個叢集都有一個以 "j-" 開頭的唯一識別符。

問:什麼是叢集步驟?

叢集步驟是使用者定義的處理單位,其大約對應到一個操作資料的演算法。步驟是一種以 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 – 步驟在執行時發生故障。

啟動叢集

問:如何存取 Amazon EMR?

您可以使用 EMR Studio、AWS 管理主控台、命令列工具、軟體開發套件或 EMR API 存取 Amazon EMR。

問:如何啟動叢集?

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

問:如何開始使用 Amazon EMR?

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

問:如何終止叢集?

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

問:Amazon EMR 是否支援多個叢集同時操作?

是。即使您已在執行一或多個叢集,還是可以隨時建立新的叢集。

問:我可以同時執行多少個叢集?

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

管理叢集

問:Amazon EMR 如何使用 Amazon EC2 和 Amazon S3?

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

問:在 Amazon EMR 中如何進行運算?

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

問:Amazon EMR 的可靠性如何?

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

問:Amazon EMR 支援哪些 Amazon EC2 執行個體類型?

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

問:如何選擇適當的 Amazon EC2 執行個體類型?

使用這部分指南可協助您確定執行個體類型、購買選項,以及為 EMR 叢集中每個節點類型提供的儲存量。

問:執行叢集需要多久時間?

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

問:如果叢集中的主節點發生故障,Amazon EMR 是否能恢復該節點?

是。您可以啟動包含三個主節點的 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 也會在核心節點故障時佈建新節點。不過,如果叢集中的所有節點都遺失,Amazon EMR 將不會取代節點。

問:是否可以使用 SSH 存取我的叢集節點?

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

問:什麼是 Amazon EMR 引導操作?

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

問:如何使用引導操作?

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

問:如何為叢集配置 Hadoop 設定?

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

問:是否可以修改執行中叢集的節點數?

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

問:何時該使用核心節點?何時該使用任務節點?

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

問:為什麼我會希望修改執行中叢集的節點數?

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

問:是否可以自動修改叢集步驟之間的節點數?

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

問:如何允許其他 IAM 使用者存取我的叢集?

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

要讓現有叢集對所有 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 EMR 叢集由 Amazon EC2 執行個體組成,新增到 Amazon EMR 叢集的標籤將傳播到該叢集的每個作用中 Amazon EC2 執行個體。您無法在已終止的叢集或者屬於作用中叢集一部分的已終止 Amazon EC2 執行個體新增、編輯或移除標籤。

問:Amazon EMR 標記是否支援 IAM 使用者以資源為基礎的許可?

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

問:可以對資源新增多少個標籤?

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

問:叢集上的 Amazon EMR 標籤是否會顯示在該叢集的每個 Amazon EC2 執行個體上? 如果移除 Amazon EMR 叢集上的標籤,是否會從每個相關的 EC2 執行個體自動移除該標籤?

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

問:如何在帳單中顯示標籤以劃分成本?

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

問:如何分辨哪些 Amazon EC2 執行個體屬於 Amazon EMR 叢集?

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

  • aws:elasticmapreduce:instance-group-role=CORE
    • 鍵值 = instance-group role;值 = [CORE 或 TASK];
  • aws:elasticmapreduce:job-flow-id=j-12345678
    • 鍵值 = job-flow-id;值 = [JobFlowID]

問:是否能直接在 Amazon EC2 執行個體上編輯標籤?

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

開發與偵錯

開發

問:哪裡可以找到程式碼範例?

有關範本程式碼,請參閱這些文章和教學

問:如何開發資料處理應用程式?

您可以在桌面開發資料處理任務,例如,使用 Eclipse 或 NetBeans 外掛程式,像是適用於 Eclipse 的 IBM MapReduce 工具 (http://www.alphaworks.ibm.com/tech/mapreducetools)。使用這些工具可以輕鬆開發和偵錯 MapReduce 任務,並在自己的本機電腦進行測試。此外,您可以使用一或多個執行個體直接在 Amazon EMR 開發自己的叢集。

問:相較於 AWS 管理主控台,使用命令列工具或 API 有什麼優勢?

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

問:是否可在執行中的叢集新增步驟?

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

問:是否可執行持久性叢集?

是。Amazon EMR 叢集在啟用終止保護標誌的情況下啟動將會繼續執行,直至明確終止。如此可讓客戶根據需要在叢集新增步驟。您可以使用此服務來偵錯應用程式,而不必重複等待叢集啟動。您也能使用持久性叢集來執行長時間執行的資料倉儲叢集。這可以和在 Hadoop 執行的資料倉儲和分析套件 (如 Hive 和 Pig) 結合使用。

問:當叢集完成時,是否可收到通知?

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

問:完成步驟後,是否可以終止叢集?

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

問:Amazon EMR 支援哪些程式設計語言?

您可以使用 Java 實作 Hadoop 自訂 Jar。或者,也可以透過 Hadoop 串流,使用包括 Perl、Python、Ruby、C++、PHP 和 R 在內的其他語言。請參閱開發人員指南,了解使用 Hadoop 串流的相關說明。

問:Amazon EMR 支援哪些作業系統版本?

Amazon EMR 使用已針對 Amazon EMR 優化的 Amazon Linux Amazon Machine Image (AMI) 建立叢集執行個體。AMI 包含每個執行個體託管叢集應用程式所需的 Amazon Linux 作業系統、其他軟體和組態。Amazon Linux AMI 於 2020 年 12 月 31 日終止服務。EMR AMI 以 Amazon Linux 2 為基礎,開始版本為 5.30.0 和 6.0.0。或者,您可以指定根據 Amazon Linux AMI 建立的自訂 AMI。這可讓您為幾乎所有應用程式執行精密的預先組態。如需詳細資訊,請參閱 Using a Custom AMI

問:是否可在叢集執行時查看 Hadoop UI?

是。請參閱開發人員指南中的 Hadoop UI 部分,了解如何存取 Hadoop UI 的相關說明。

問:Amazon EMR 是否支援第三方軟體套件?

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

問:Amazon EMR 支援哪些 Hadoop 版本?

如需 Amazon EMR 支援的最新版本,請參閱文件

問:Amazon 是否會將 Hadoop 的增強功能提供給開放原始碼社群?

是。Amazon EMR 積極參與開放原始碼社群,並為 Hadoop 開放原始碼社群提供許多修正程式。

問:Amazon EMR 是否會更新支援的 Hadoop 版本?

Amazon EMR 會根據社群發佈的 Hadoop,定期更新支援的 Hadoop 版本。Amazon EMR 可能會選擇略過某些 Hadoop 版本。

問:Amazon EMR 會多快淘汰對舊版 Hadoop 的支援?

Amazon EMR 服務會在 Hadoop 版本過期後幾個月淘汰舊版本的支援。但是,Amazon EMR API 可以與舊版相容,所以如果您使用這些 API 建置工具,仍然可在 Amazon EMR 更新所使用的 Hadoop 版本後繼續使用。

偵錯

問:我可以使用哪些工具來偵錯?

您可以使用多種工具來收集有關叢集的資訊,以協助確定問題所在。有些要求您在啟動叢集時將其初始化;其他則適用於每一個叢集。您可以獲取顯示叢集詳細資訊的工具檢視日誌檔案的工具監控叢集效能的工具。如需詳細資訊,請參閱文件

問:如何存取叢集中個別應用程式可用的 Web 界面?

您可以使用 SSH 連線至主節點。Hadoop 還將使用者界面發佈為託管在核心和任務節點上的網站。這些網站也僅在節點上的本機 Web 伺服器上可用。以下是您可以在叢集執行個體上檢視的 Web 界面

問:是否可以在不使用 SSH 的情況下,輕鬆存取應用程式歷史記錄?

是。您可以透過多個選項來取消叢集對 Apache Spark、Tez UI 和 YARN Timeline Server 持久性應用程式使用者界面,若干叢集內應用程式使用者界面,以及所有 YARN 應用程式在 EMR 主控台中的應用程式歷史記錄摘要檢視的存取權。如需詳細資訊,請參閱文件

EMR Notebooks

問:什麼是 EMR Notebooks?

EMR Notebooks 根據 Jupyter Notebook 提供受管的環境,允許資料科學家、分析師及開發人員使用 EMR 叢集準備和視覺化資料、與同儕協作、建置應用程式以及執行互動分析。

問:EMR Notebooks 可以用來做什麼?

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

問:如何開始使用 EMR Notebooks?

若要開始使用 EMR Notebooks,請開啟 EMR 主控台並在導覽窗格中選擇 Notebooks。從該處,僅選擇 Create Notebook,為您的筆記本輸入名稱,選擇 EMR 叢集或即時建立新的叢集,提供服務角色供筆記本使用,並選擇您想要儲存筆記本檔案的 S3 儲存貯體,然後按一下 Create Notebook。筆記本顯示就緒狀態後,選擇 Open 以啟動筆記本編輯器。

問:我可以不用登入 AWS 管理主控台就開啟 EMR Notebooks 嗎?

不,要建立或開啟筆記本並在 EMR 叢集上執行查詢,您需要登入 AWS 管理主控台。筆記本檔案會以 ipynb 格式儲存到您的 S3 儲存貯體,並可從您的機器本機下載和開啟。

問:EMR Notebooks 支援哪些程式設計語言?

EMR Notebook 支援 PySpark、SparkR、SparkSQL、Spark (Scala) 和 Python 核心。

問:EMR Notebooks 提供有哪些程式庫?

可在您的程式碼中匯入開放原始碼 Anaconda 存放庫中的程式庫。您可以匯入這些程式庫並在筆記本上本機使用。

問:我可以安裝自訂程式庫,以在筆記本程式碼中使用嗎?

所有 Spark 查詢均在您的 EMR 叢集上執行,因此,您需要安裝 Spark 應用程式在叢集上使用的所有執行時間程式庫。您可以使用引導操作或自訂 AMI 來在建立叢集時安裝所需的程式庫。如需詳細資訊,請參閱 Amazon EMR Management Guide 中的 Create Bootstrap Actions to Install Additional SoftwareUsing a Custom AMI。不支援從筆記本編輯器安裝程式庫。

問:EMR Notebooks 有哪些服務限制?

Notebooks 使用您 EMR 叢集的主節點來執行查詢。主要執行個體的大小限制了您可以連接至叢集的筆記本數目。一旦您超過此限制,則必須先停止一個作用中的筆記本,然後才能啟動另一個筆記本。

問:如何停止我的筆記本?

您可以使用 EMR 主控台。選擇 Notebooks,從清單中選取筆記本,然後選擇 Stop。這會終止筆記本工作階段並讓其無法在筆記本編輯器中開啟。您可以選擇 Start 以重新啟動筆記本。

問:如何刪除我的筆記本?

您可以使用 EMR 主控台。選擇 Notebooks,從清單中選取筆記本,然後選擇 Delete。刪除筆記本僅會將其從主控台中的清單中移除。筆記本檔案讓保留在您建立筆記本時指定的 Amazon S3 位置。

問:我如何從筆記本執行查詢和執行程式碼?

您在筆記本內執行的 Spark 查詢會在您建立筆記本時選擇的 EMR 叢集上執行。您從筆記本編輯器選取的程式設計語言核心與您 EMR 叢集上安裝的 Livy 伺服器互動,以建立 Spark 工作階段,且您的所有查詢均在該叢集上執行。Spark 應用程式的輸出會使用 Livy 傳達回核心且可在筆記本內查看。

在筆記本編輯器中執行程式碼之前,您需要確定筆記本的狀態為就緒。此狀態表示叢集上的應用程式與筆記本編輯器之間的界面已準備好執行查詢和程式碼。若要開啟編輯器,請從筆記本清單中選取筆記本,然後選擇 Open 以在新瀏覽器標籤中啟動筆記本編輯器。在筆記本編輯器中,從 Kernel 清單中,選取您所查詢的程式設計語言核心。核心啟動且就緒後,您可以像在 Jupyter 筆記本中一樣執行程式碼 - 例如,按一下單一儲存格中的 Run 按鈕,從 Cell 功能表中選擇 Run All

問:EMR Notebooks 支援哪些 EMR 發行版本?

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

問:我可以不使用 EMR 叢集即建立筆記本或開啟筆記本編輯器嗎?

不可以,若要從主控台建立或開啟 EMR 筆記本,您需要在筆記本工作階段期間將其連接至執行中的 EMR 叢集。您可以在建立筆記本時或在重新啟動之前,快速建立相容的 EMR 叢集。您始終可以從建立筆記本時選擇的 S3 位置,以 ipynb 格式下載先前建立的筆記本檔案。

問:我是否可以讓筆記本工作階段無限期地執行?

否。如果某個筆記本閒置較長的時間,則會停止。如果筆記本編輯器仍開啟,則您在編輯器中執行的程式碼會失敗。您可再次從 EMR 主控台啟動筆記本,然後重新開啟筆記本編輯器。

問:如果我在叢集上正在執行一些程式碼時關閉筆記本編輯器會發生什麼情況?

關閉筆記本編輯器不會影響叢集上執行的任何程式碼,但是,如果您在一段較長的時間內未重新開啟筆記本編輯器,筆記本將會停止,您將不會讓任何輸出回到筆記本。您可以透過按一下筆記本連結,重新啟動此筆記本並恢復您的工作。

問:如果 EMR 叢集不再連接至筆記本,它會關閉嗎?

不會。您需要終止叢集以將其關閉。

問:我可以搭配哪些其他 Apache Hadoop 應用程式使用 EMR Notebooks?

EMR Notebooks 目前在 Hadoop 生態系統中支援 Spark。

問:我是否可以搭配不同的 EMR 叢集使用筆記本?

是,您可以變更 EMR 叢集。變更叢集之前,Notebooks 必須停止。然後,您可以從 Notebooks 清單選取叢集,依次選擇 View DetailsChange cluster 來選取執行中的叢集或建立新的叢集,然後選擇 Change cluster and start the notebook

問:筆記本的儲存位置為何?

筆記本檔案會以 ipynb 檔案格式定期儲存至您在建立筆記本時指定的 Amazon S3 位置。筆記本檔案的名稱與 EMR 主控台中的筆記本相同。您還可以隨時在筆記本編輯器內使用儲存和檢查點功能手動儲存筆記本。這會以子資料夾中名為 checkpoint 的相同名稱建立 ipynb 檔案。最新的檢查點檔案會覆寫先前的檢查點檔案。筆記本編輯器中另存為功能無法使用。

問:我如何對筆記本使用版本控制? 我可以使用 GitHub 之類的儲存庫嗎?

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

問:我如何使用我儲存的筆記本?

若要使用儲存的筆記本,請使用 EMR 主控台按一下 Notebooks 清單中的筆記本。

問:我是否可以將我的公司 Active Directory 與 EMR Notebooks 整合?

僅可透過 EMR 適用的 AWS 管理主控台存取 EMR Notebooks。您可以將使用者從 Active Directory (AD) 聯合至 AWS 管理,以提供單一登入體驗。如需詳細資訊,請瀏覽 Enabling federation to AWS using Active Directory, ADFS and SAML 2.0

問:使用筆記本需要哪些 IAM 政策?

使用者必須具有基於身分的政策聲明,該聲明提供建立和使用 EMR Notebooks 的權限。除了使用者政策,EMR Notebooks 還使用服務角色來存取其他 AWS 資源和執行操作。如需詳細資訊,請參閱 Amazon EMR Release Guide 中的 Security for EMR Notebooks

問:筆記本如何與我 EMR 叢集的主節點通訊,可以為該通訊提供哪些安全性?

EMR 主節點使用 Livy 來與筆記本編輯器互動。每個 EMR Notebook 使用 Amazon EC2 安全性群組來控制主節點和 EMR 筆記本上 Livy 伺服器之間的網路流量。預設安全性群組規則會限制網路流量,以便僅 Livy 流量可以在筆記本編輯器和編輯器所使用的叢集上的主節點之間通過。您可以針對每個筆記本和每個叢集為自訂安全性群組提供自訂的傳入和傳出規則,以進一步從筆記本主控台頁面限制特定筆記本和叢集之間允許的通訊,或在筆記本服務角色提供權限,讓筆記本服務代表您建立安全性群組。如需詳細資訊,請參閱 Amazon EMR Release Guide 中的 Specifying EC2 Security Groups

問:身為管理員,我如何控制筆記本使用者對 EMR 叢集的存取?

您可以透過在叢集上使用標記,來限制使用者可以透過筆記本查詢的 Amazon EMR 叢集。如果使用者具有建立筆記本的權限,他們可以連接至任何 Amazon EMR 叢集,直至透過使用標記限制存取。如需詳細資訊,請參閱 Amazon EMR Release Guide 中的 EMR Notebook tags

問:多個使用者是否可以同時開啟相同的筆記本?

否,一次只有一個使用者可以開啟筆記本。若要檢視目前的使用者,請從 Notebooks 清單選取筆記本,選擇檢視詳細資料,然後您可以查看上次修改筆記本的使用者的使用者名稱和 IAM Amazon Resource Name (ARN)。如需有關 ARN 的詳細資訊,請參閱 AWS General Reference 中的 Amazon Resource Names

問:我如何限制使用者編輯或刪除筆記本的能力?

您可以搭配使用筆記本標記和基於身分的 IAM 政策來控制對您筆記本的存取。依預設,與建立筆記本的使用者相關聯的標記會自動新增至筆記本。如需詳細資訊,請參閱 EMR Management Guide 中的 Using Notebook Tags to Control IAM User Access

問:我可以將筆記本連接至啟用 Kerberos 的 EMR 叢集嗎?

否,目前不支援受 Kerberos 保護的 EMR 叢集。

問:如果筆記本正在使用叢集,我可以將該叢集終止嗎?

是。如果筆記本編輯器仍開啟,則您在編輯器中執行的程式碼會失敗,且筆記本在一段時間後將會停止。

問:使用 EMR Notebooks 的費用是多少?

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

EMR Studio

問:什麼是 EMR Studio?

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

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

問:EMR Studio 可以用來做什麼?

藉助 EMR Studio,您無需登入 AWS 主控台,即可使用公司登入資料直接登入全受管筆記本,在幾秒鐘內啟動筆記本,開始使用範例筆記本,並執行資料探索。您還可以透過從筆記本載入自訂內核和 python 程式庫來自訂環境。EMR Studio 內核和應用程式在 EMR 叢集上執行,因此您可以使用針對 Apache Spark 進行效能最佳化的 Amazon EMR 執行時間,取得分散式資料處理的優勢。您可以透過 Github 和其他儲存庫共享筆記本,從而與同事協作。您還可以直接將筆記本作為管道執行。您可以將不同的參數值傳遞至筆記本。您還可以鏈接筆記本,並使用工作流編協調服務 (如 Apache Airflow) 將筆記本整合至排程的工作流程中。此外,您可以透過原生應用程式界面 (如 Spark UI 和 YARN Timeline 服務),以盡可能少的點按操作來對叢集和任務偵錯。

問:EMR Studio 與 EMR Notebooks 有何區別?

主要有五個區別。

  1. 無需存取適用於 EMR Studio 的 AWS 管理主控台。EMR Studio 託管在 AWS 管理主控台之外。如果您不向資料科學家或資料工程師提供 AWS 管理主控台存取權,這會很有用。
  2. 您可以使用 AWS Single Sign-On (SSO),透過身分供應商提供的企業登入資料來登入 EMR Studio。 
  3. EMR Studio 為您帶來筆記本優先體驗。EMR Studio 內核和應用程式在 EMR 叢集上執行,因此您可以使用針對 Apache Spark 進行效能最佳化的 Amazon EMR 執行時間,取得分散式資料處理的優勢。在叢集上執行程式碼就像將筆記本連接至現有叢集或佈建新叢集一樣簡單。
  4. EMR Studio 具有簡化的使用者界面並提供硬體組態摘要。例如,您可以一次設定叢集範本,然後使用範本啟動新的叢集。 
  5. EMR Studio 提供簡化的偵錯體驗,因此您只需點按幾下,即可在一處存取原生應用程式使用者界面。

問︰EMR Studio 與 SageMaker Studio 有何區別?

EMR Studio 透過 EMR 提供筆記本優先的整合式開發環境 (IDE) 體驗。藉助 EMR Studio,您可以輕鬆建置和部署 Spark 和其他大數據應用程式。Amazon SageMaker Studio 提供單一的 Web 視覺化界面,您可以在其中執行所有機器學習開發步驟。SageMaker Studio 讓您可以完全存取、控制和洞察在建立、訓練和部署模型時需要執行的每個步驟。您可以快速上傳資料,創建新的筆記本,訓練和調整模型,在步驟之間來回移動以調整實驗,比較結果,以及將模型部署至一處,讓您的工作更有效率。在統一的 SageMaker Studio 視覺化界面中可以執行所有 ML 開發活動,包括筆記本、實驗管理、自動建立模型、偵錯和模型偏離偵測。

問:如何開始使用 EMR Studio?

您的管理員必須首先設定 EMR Studio。您從管理員獲得 Amazon EMR Studio 的唯一登入 URL 後,可以使用公司登入資料直接登入 Studio。

問:我是否需要登入 AWS 管理主控台,才能使用 EMR Studio?

否。在管理員設定 EMR Studio 並提供 Studio 存取 URL 之後,您的團隊可以使用公司登入資料進行登入。無需登入 AWS 管理主控台。在 EMR Studio 中,您的團隊可以執行任務並存取管理員設定的資源。

問:EMR Studio 中的單一登入體驗支援哪些身分供應商?

AWS Single Sign-On (SSO) 是 EMR Studio 的單一登入服務供應商。AWS SSO 支援的身分供應商清單可在我們的文件中找到。

問︰什麼是 EMR Studio 工作空間?

工作空間可協助您整理 Jupyter 筆記本。工作空間內的所有筆記本均儲存在相同的 Amazon S3 位置,並在同一叢集上執行。您還可以將程式碼儲存庫 (如 GitHub 儲存庫) 鏈接至工作空間內的所有筆記本。您可以先建立和設定工作空間,再將工作空間連接至叢集,但在執行筆記本之前,應先連線至叢集。

問:在 EMR Studio 中,是否可以在沒有叢集的情況下,建立工作空間或開啟工作空間?

是,您可以在未連接至叢集的情況下建立或開啟工作空間。僅在需要執行時才將其連線至叢集。EMR Studio 內核和應用程式在 EMR 叢集上執行,因此您可以使用針對 Apache Spark 進行效能最佳化的 Amazon EMR 執行時間,取得分散式資料處理的優勢。

問:在 EMR Studio 中,我可以在哪些運算資源上執行筆記本?

您可以在 EMR 叢集上執行筆記本。您可以將筆記本連接至現有叢集或新叢集。您可以透過兩種方式在 EMR Studio 中建立 EMR 叢集:透過 AWS Service Catalog 使用預先設定的叢集範本建立叢集;透過指定叢集名稱、執行個體數目和執行個體類型來建立叢集。

問:是否可以在 EMR Studio 中重新連接具有其他運算資源的工作空間?

是,您可以開啟工作空間,選擇左側 EMR 叢集圖示,按下中斷連接按鈕,然後從選取叢集下拉式清單中選擇叢集,並按下連接按鈕。

問:在 EMR Studio 中哪裡可以找到我所有的工作空間?

在 EMR Studio 中,您可以選擇左側的工作空間標籤,然後檢視您和其他使用者在同一 AWS 帳戶中建立的所有工作空間。

問:使用 EMR Studio 需要哪些 IAM 政策?

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

問:在 EMR Studio 中將我的工作空間連接至 EMR 叢集是否有任何限制?

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

管理資料

問:如何將我的資料傳入 Amazon S3?

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

問:如何取得已終止叢集的日誌?

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

問:是否會壓縮日誌?

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

問:是否可從網際網路或 Amazon S3 以外的其他位置載入資料?

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

計費

問:Amazon EMR 是否能預估需要多長的時間來處理我的輸入資料?

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

問:Amazon EMR 的費用是多少?

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

問:Amazon EMR 叢集的帳單週期如何計算?

當叢集準備執行步驟時,Amazon EMR 計費開始。當您請求關閉叢集時,Amazon EMR 計費結束。如需有關 Amazon EC2 何時開始和結束計費的更多詳細資訊,請參閱 Amazon EC2 計費常見問答集

問:可以在哪裡追蹤我的 Amazon EMR、Amazon EC2 和 Amazon S3 使用情況?

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

問:如何計算顯示在主控台的標準化執行個體小時數?

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

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

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

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

問:Amazon EMR 是否支援 Amazon EC2 隨需執行個體、Spot 執行個體和預留執行個體?

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

問:價格含稅嗎?

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

安全性

問:如何防止其他使用者在叢集執行期間檢視我的資料?

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

問:我的資料安全性如何?

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

問:是否能取得我的帳戶上所有 EMR API 呼叫的歷史記錄,以用於安全或合規稽核?

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

區域與可用區域

問:Amazon EMR 如何利用可用區域?

Amazon EMR 可啟動相同 Amazon EC2 可用區域中指定叢集的所有節點。在相同區域中執行叢集可提供更高的資料存取速率,因此可提升任務流程的效能。預設情況下,Amazon EMR 會選擇擁有最多可用資源的可用區域來執行叢集。不過,您可以視需要指定其他可用區域。

問:哪些區域可以使用 Amazon EMR?

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

問:AWS 本地區域是否支援 Amazon EMR?

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

問:我應該選擇哪一個區域執行叢集?

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

問:是否可在美國區域執行的叢集中使用歐洲資料,或是在歐洲區域執行的叢集中使用美國資料?

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

問:AWS GovCloud (US) 區域有什麼不同?

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

部署選項

Amazon EMR on Amazon EKS

問︰什麼是 Amazon EMR on Amazon EKS?
Amazon EMR on Amazon EKS 是 Amazon EMR 的部署模型,讓客戶能夠輕鬆且經濟高效地處理大量資料。其利用在容器中靈活的 Amazon EKS 受管服務上執行的託管分析框架,以及 Amazon Elastic Compute Cloud (Amazon EC2)、AWS Fargate 和 Amazon Simple Storage Service (Amazon S3) 的 Web 級基礎架構。

問:為什麼應該使用 Amazon EMR on Amazon EKS?
Amazon EMR on Amazon EKS 透過使用容器型方法,將分析任務與正在處理任務的服務和基礎架構分離。由於 EMR on EKS 根據任務的運算、記憶體和應用程式相依項來動態設定基礎結構,因此,您可以將更多精力集中在開發應用程式上,而不必專注於基礎結構的操作。基礎架構團隊可集中管理通用運算平台,以將 EMR 工作負載與其他容器型應用程式整合在一起。多個團隊、組織或業務部門可同時在共享基礎架構上獨立地執行其分析程序,同時確保由 Amazon EKS 和 AWS Identity and Access Management (IAM) 啟用的隔離。

問:對於已經在 Amazon EKS 上執行 Apache Spark 的使用者有何優勢?
如果您已經執行 Apache Spark on Amazon EKS,可享有 Amazon EMR 的所有優勢,如自動佈建和擴展,能夠使用最新的全受管版本開放原始碼大數據分析框架。您可以享有針對 Apache Spark 的最佳化 EMR 執行時間 (其效能比開放原始碼 Apache Spark on EKS 快 3 倍)、EMR Studio 和 Apache Spark UI 的無伺服器資料科學經驗、精細的資料存取控制,以及資料加密支援。

問:此功能如何與其他 AWS 服務關聯及搭配使用?
Amazon EKS 為客戶提供在 AWS 上執行 Kubernetes 的受管體驗,讓您可以使用 EKS 受管節點群組或 AWS Fargate 新增運算容量。在 EKS 上執行 EMR 任務可在 Amazon S3 上存取其資料,而監控和日誌記錄則可與 Amazon CloudWatch 整合。AWS Identity and Access Management (IAM) 為任務和相依 AWS 服務啟用以角色為基礎的存取控制。

問:Amazon EMR on Amazon EKS 如何運作?
在 Amazon EMR 註冊您的 EKS 叢集。然後,使用 CLI、SDK 或 EMR Studio 將您的 Spark 任務提交至 EMR。EMR 在 EKS 上請求 Kubernetes 排程器來排程 Pod。針對您執行的每項任務,EMR on EKS 會建立一個容器。該容器包含具有安全更新 Amazon Linux 2 基本映像、Apache Spark 和執行Spark 的關聯相依項,以及應用程式特點的相依項。每項任務都在一個 Pod 中執行。Pod 會下載該容器並開始執行。如果容器的映像之前已部署至節點,則會使用快取的映像,並繞過下載。Sidecar 容器可部署至 Pod,例如日誌或指標轉發器。任務終止後,Pod 即會終止。任務終止後,您仍然可以使用 Spark UI 對其偵錯。

問:Amazon EMR on EKS 可以與哪些 AWS 運算服務搭配使用?
您可以將 Amazon EMR for EKS 與兩個 Amazon Elastic Compute Cloud (EC2) 執行個體搭配使用,以支援更廣泛的自訂選項,或者與無伺服器 AWS Fargate 服務搭配使用,以處理您的分析,而無須佈建或管理 EC2 執行個體。透過將您的分析任務分散在多個 AWS 可用區域 (AZ),可以自動提高應用程式的可用性。

問:如何開始使用 EMR on EKS?
首先,在 Amazon EMR 註冊您的 Amazon EKS 叢集。 註冊後,透過將工作負載提交至 EMR 來執行,從而在您的任務定義 (包括應用程式相依項和框架參數) 中參考此註冊。藉助 EMR on EKS,您可以針對在同一 EKS 叢集上執行的分析應用程式,使用不同的開放原始碼大數據分析框架、版本和組態。 如需詳細資訊,請參閱我們的文件

問:如何將分析應用程式提交至 EMR on EKS?
您可以使用 AWS SDK / CLI、Amazon EMR Studio 筆記本和工作流程協調服務 (如 Apache Airflow 和適用於 Apache Airflow 的 Amazon Managed Workflows) 來提交分析應用程式。 可從 S3 下載 AWS EMR on EKS 的 Airflow 外掛程式。若要為適用於 Apache Airflow 的 Amazon Managed Workflows 安裝 emr-containers 外掛程式,請參閱我們的 文件

問:是否可以對在 EKS 上執行的 EMR 叢集和應用程式使用相同的 EMR 版本?

是,您可以對在 EMR 叢集上執行的應用程式和在 EKS 上執行的應用程式使用相同的 EMR 版本。

問:如何對分析應用程式進行故障排除?
您可以使用 Amazon EMR Spark UI 來診斷 Spark 應用程式並對其進行故障排除。針對所有分析應用程式,EMR 可以在完成後長達 30 天的時間內提供對應用程式詳細資訊、關聯的日誌和指標的存取權。可以個別設定任務,以將日誌傳送至 Amazon S3 位置或 Amazon CloudWatch。

問:是否可以在 EKS 中看到 EMR 應用程式?
是,EMR 應用程式作為 Kubernetes 任務和部署顯示在 EKS 主控台中。

問:是否可以在同一個 EKS 叢集上將多個任務或應用程式彼此隔離?
是,Kubernetes 以原生方式提供任務隔離。此外,可以將每項任務設定為使用自身的執行角色來執行,以限制該任務可存取的 AWS 資源。

問:EMR on EKS 如何幫助降低成本?
EMR on EKS 透過消除執行專用叢集的需求來降低成本。您可以使用常用的共享 EKS 叢集,來執行需要不同版本開放原始碼大數據分析框架的分析應用程式。您還可以使用相同的 EKS 叢集來執行其他容器化非 EMR 應用程式。

問:如何對 EMR on EKS 收費?
Amazon EMR on EKS 定價依據每分鐘精細執行您任務的 Pod 所請求的 vCPU 和記憶體資源來計費。如需定價資訊,請瀏覽 Amazon EMR 定價頁面

問:EMR on EKS 與 EMR on EC2 之間有何區別?

功能

EMR on EKS

EMR on EC2

最新支援的 EMR 版本

Y

Y

任務異地同步備份支援

Y

N

非大數據工作負載多租用戶

Y

N

EMR 版本範圍

任務

叢集

叢集自動調整規模

Y

Y

受管擴展

N

Y

運算供應商

EC2、Fargate

EC2

資料加密

Y

Y

Kerberos 身份驗證

N

Y

受管應用程式

僅 Spark

多個

AWS Lake Formation

N

Y

Apache Ranger 整合

N

Y

自訂 AMI / 映像

N

Y

與 Sagemaker 和 Zeppelin 整合

Y (與 Livy)

Y

自我託管筆記本

N

Y

與 EMR Studio 整合

Y

Y

Zeppelin、JEG

N

Y

與 Apache Airflow 協同作業

Y

Y

與 AWS Stepfunctions 協同作業

N

Y

 

N

AWS Outposts 上的 Amazon EMR

問:什麼是 AWS Outposts?

AWS Outposts 可將原生 AWS 服務、基礎設施和操作模型用於幾乎所有的資料中心、主機代管空間或內部部署設施。使用 Outposts 上的 EMR,您可以部署、管理與擴展 EMR 叢集內部部署,像您在雲端做的一樣。

問:我應該何時使用 Outposts 上的 EMR?

如果您有現有的內部部署 Apache Hadoop 部署,並且在使用高峰期間維持容量需求遭遇到困難,您可以使用 Outposts 上的 EMR 來增強處理容量,不需要移動資料到雲端。Outposts 上的 EMR 讓您能在幾分鐘內就能啟動新的 EMR 叢集內部部署,並在內部部署的 HDFS 儲存空間中連接到現有的資料集,以達到此需求並維持 SLA。

如果您因管控、合規或其他原因而需要處理需要保留在內部部署的資料,可以使用 Outposts 上的 EMR 在靠近資料的位置部署和執行內部部署的 Apache Hadoop 和 Apache Spark 之類的應用程式。這減少了將大量內部部署資料移至雲端的需求,從而減少了處理資料所需的總時間。

如果您正在將資料和 Apache Hadoop 工作負載移轉到雲端,並且想要在移轉完成之前開始使用 EMR,則可以使用 AWS Outposts 在連接到現有內部部署 HDFS 儲存來啟動 EMR 叢集。然後,您可以將資料逐漸移轉到 Amazon S3,作為向雲端架構發展的一部分。

問:Outposts 上的 EMR 支援哪些 EMR 版本?

最低支援 Amazon EMR 發行版本是 5.28.0。

問:使用 Outposts 時,哪些 EMR 應用程式是可用的?

EMR 版本 5.28.0 或更新版本的所有應用程式皆支援。請參閱我們的版本備註,以取得 EMR 應用程式的完整列表。

問:Outposts 上的 EMR 不支援哪些 EMR 功能?

  • AWS Outposts 中不提供 EC2 Spot 執行個體。建立叢集時,您必須選擇 EC2 隨需執行個體。
  • AWS Outposts 中提供 EC2 執行個體類型的子集。若想取得 EMR 與 Outposts 支援的執行個體類型列表,請參閱我們的文件
  • 將 Amazon EBS 磁碟區加入執行個體時,AWS Outposts 僅支援一般用途 SSD (GP2) 儲存類型。

問:我能在 Outpost 中使用 EMR 叢集,以從現有的內部部署 Apache Hadoop 叢集讀取資料嗎?

Outpost 中的 EMR 上執行的工作負載可以在現有的 HDFS 儲存空間內讀取與寫入資料,讓您輕鬆整合現有的內部部署 Apache Hadoop 部署。這讓您能夠使用 EMR 增強資料處理需求,而不需要移轉資料。

問:我可以選擇在哪裡儲存資料嗎?

當 EMR 叢集在 Outpost 啟動時,所有的計算與資料儲存資源都部署於 Outpost 中。在本機寫入 EMR 叢集的資料儲存在 Outpost 中的本機 EBS 磁碟區。Apache Hive、Apache Spark、Presto 及其他 EMR 應用程式等工具,能夠逐一設定為在本機 Outpost 或外部檔案系統 (例如現有的 HDFS 安裝) 或 Amazon S3 寫入資料。使用 Outpost 上的 EMR,您可以完全控制儲存資料於 Amazon S3 或在本機 Outpost 中。

問:是否有任何 EMR 功能需要上傳資料到 S3?

在 Outpost 中啟動 EMR 叢集時,您可以選擇啟用記錄。啟用記錄時,叢集記錄將會上傳至您指定的 S3 儲存貯體。這些記錄用來在終止後簡化偵錯叢集。關閉後,記錄不會上傳至 S3。

問:如果我的 Outpost 沒有容量了,會發生什麼事?

在 Outpost 啟動叢集時,EMR 會試圖啟動您請求的 EC2 隨需執行個體的數目與類型。若 Outpost 上無可用的容量,EMR 將會收到容量不足的通知。EMR 將會重試一段時間,若仍無可用容量,叢集將會啟動失敗。一樣的過程也會套用在重新調整叢集大小時。若 Outpost 沒有足夠容量供請求的執行個體類型使用,EMR 將無法擴展叢集。您可以輕鬆設定 Amazon CloudWatch 警示,監測您的 Outpost 使用容量,並在執行個體空間低於需要的門檻時收到警示。

問:若 Outpost 及 AWS 之間的網路連線中斷,會發生什麼事?

若 Outpost 與其 AWS 區域之間的網路連線中斷,您在 Outpost 中的叢集將會持續執行,但是在連線恢復前,您將無法採取某些動作。恢復連線後,您才能夠在現有叢集上建立新叢集,或採取新的動作。若執行個體故障,該執行個體將不會自動更換。此外,新增步驟至執行中的叢集、確認步驟執行狀態和傳送 CloudWatch 指標與活動等動作將會延遲至連線恢復。

建議您提供可靠且高可用度的網路連線,來連接 Outpost 與 AWS 區域。若 Outpost 與其 AWS 區域中斷網路連線數小時以上,啟用終止保護的叢集將會持續執行,且停用終止保護的叢集將會終止。若網路連線會受到例行維護影響,建議您主動啟用終止保護。

使用 EBS 磁碟區

問:我現在可以做到哪些之前無法做到的事情?

大部分 EC2 執行個體都有固定的儲存容量連接到執行個體,稱為「執行個體存放區」。您現在可以將 EBS 磁碟區新增到 Amazon EMR 叢集中的執行個體,以便自訂執行個體上的儲存。這個功能也可讓您在僅限 EBS 執行個體系列 (如 M4 和 C4) 上執行 Amazon EMR 叢集。

問:將 EBS 磁碟區新增到 Amazon EMR 上執行的執行個體有哪些好處?

在下列情況中,您能夠受益於將 EBS 磁碟區新增到執行個體:

  1. 您的處理要求是需要執行個體目前所提供的大量 HDFS (或本機) 儲存。透過支援 EBS 磁碟區,您能夠按執行個體提供的運算容量來自訂執行個體上的儲存容量。優化執行個體上的儲存可讓您節省成本。
  2. 您在上一代執行個體系列 (如 M1 和 M2 系列) 上執行並希望移至最新一代執行個體系列,但是受限於下一代執行個體類型上每個節點可用的儲存。現在您可以使用任何新一代的執行個體類型,並新增 EBS 磁碟區來優化儲存。內部基準顯示從上一代執行個體系列 (M1 或 M2) 移到新一代執行個體系列 (M4、C4 和 R3),可以節省成本和提升效能。Amazon EMR 團隊建議執行您的應用程式以獲得正確的結論。
  3. 您想要使用或遷移到新一下僅限 EBS 的 M4 和 C4 系列。

問:叢集終止之後,我的資料仍然會保存在 EBS 磁碟區上嗎?

目前,Amazon EMR 會在叢集終止之後刪除磁碟區。如果您想要持久儲存資料而不受限於叢集的生命週期,請考慮使用 Amazon S3 做為資料存放區。

問:可以將哪種類型的 EBS 磁碟區連接到執行個體?

Amazon EMR 可讓您使用不同的 EBS 磁碟區類型:一般用途 SSD (GP2)、磁帶和佈建 IOPS (SSD)。

問:終止叢集之後,EBS 磁碟區會發生什麼事?

EMR 叢集終止後,Amazon EMR 會刪除磁碟區。

問:EBS 可以與已經有執行個體存放區的執行個體搭配使用嗎?

是,您可以將 EBS 磁碟區新增到有執行個體存放區的執行個體。

問:是否可將 EBS 磁碟區連接到執行中叢集?

否,目前您只能在啟動叢集時連接 EBS 磁碟區。

問:我可以從叢集拍攝磁碟區的快照嗎?

EBS API 可讓您拍攝叢集的快照。然而,Amazon EMR 目前不允許您從快照還原。

問:我可以使用加密的 EBS 磁碟區嗎?

您可以使用 AWS KMS 作為金鑰供應商,來對 EBS 根裝置和儲存磁碟區加密。如需詳細資訊,請參閱本機磁碟加密

問:從執行中叢集移除連接的磁碟區時會發生什麼事?

從執行中叢集移除連接的磁碟區會被視為節點故障。Amazon EMR 將會使用相同的節點和 EBS 磁碟區來取代它們。

EMR 工作負載

使用 Hive

問:什麼是 Apache Hive?

Hive 是在 Hadoop 上執行的一種開放原始碼資料倉儲和分析套件。Hive 由 SQL 為基礎的語言 Hive QL 操作,讓使用者能建構、摘要和查詢 Amazon S3 中儲存的資料來源。Hive QL 的功能超過標準 SQL,新增 map/reduce 函數的第一級支援及複雜且可擴展的使用者定義資料類型,如 JSON 與 Thrift。這個功能讓您能夠處理複雜甚至非結構化的資料來源,例如,文字文件和日誌檔案。Hive 允許透過以 Java 編寫的使用者定義函數及透過 Amazon S3 中的儲存進行部署,以執行使用者擴展。您可以在這裡進一步了解 Apache Hive

問:使用 Amazon EMR 上執行的 Hive 可以執行哪些操作?

使用 Hive 搭配 Amazon EMR 時,您可以利用類似 SQL 的熟悉語言和 Amazon EMR 中易於使用的工具,實作複雜的資料處理應用程式。透過 Amazon EMR,您可以將 Hive 應用程式轉換為可靠的資料倉儲以執行任務,如資料分析、監控和商業智慧任務。

問:Hive 與傳統的 RDBMS 系統有何不同?

傳統的 RDBMS 系統提供交易語意和 ACID 屬性。這些系統還允許對表格進行索引和快取,因此可以非常快速地擷取少量資料。這種系統可快速更新少量資料,並強制執行參考完整性限制。通常在單一大型機器上執行,且不支援在表格上執行 map 和 reduce 函數,通常也不支援對複雜的使用者定義資料類型執行操作。

反之,Hive 使用 MapReduce 執行類似 SQL 的查詢。因此,它在機器叢集上執行時,針對整個表格執行的掃描進行了優化,能夠處理數量龐大的資料。Hive 提供分區表,如果執行的查詢適合掃描表格的分區,就不會掃描整個表格。

傳統 RDMS 系統比較適合要求交易語意和參考完整性,以及時常執行少量更新的情況。Hive 比較適合離線報告、轉換和分析大型資料集;例如,對大型網站或網站集合執行點擊流分析。

其中一種常見的做法是將資料從 RDBMS 系統匯出至 Amazon S3,在其中使用執行 Hive 的 Amazon EMR 叢集執行離線分析。

問:如何開始使用在 Amazon EMR 上執行的 Hive?

最好的入門方法就是參閱這裡的書面文件。

問:在 Hive 中是否有專為 Amazon EMR 設計的新功能?

是。如需更多詳細資訊,請參閱我們的文件

  • 您可以啟動具有多個主節點的 EMR 叢集,以支援 Apache Hive 的高可用性。如果主要主節點故障或 Resource Manager 或 Name Node 等關鍵程序中斷,Amazon EMR 會自動容錯移轉至備用主節點。這意味著您可以在 EMR 叢集上執行 Apache Hive 而不會受到干擾。
  • Amazon EMR 可讓您針對 Apache Hive 叢集定義 EMR 受管擴展,以協助您最佳化資源使用。透過 EMR 受管擴展,您可以自動調整叢集大小,以盡可能低的成本獲得最佳效能。透過 EMR 受管擴展,您可以為叢集指定最小和最大運算限制,Amazon EMR 會自動調整叢集的大小,以獲得最佳效能和資源使用率。EMR 受管擴展會不斷地對與叢集上執行的工作負載關聯的關鍵指標進行採樣。
  • Amazon EMR 6.0.0 新增對 Hive LLAP 的支援,相較於 EMR 5.29,平均效能提升了 2 倍。您可以在這裡進一步了解更多資訊。
  • 現在,您可以在 Amazon EMR 上將 S3 Select 與 Hive 搭配使用以提升效能。S3 Select 允許應用程式僅從物件擷取資料子集,這減少了在 Amazon EMR 和 Amazon S3 之間傳輸的資料量。
  • Amazon EMR 還可以提高複雜 Apache Hive 查詢的效能。EMR 預設會使用 Apache Tez,相較於 Apache MapReduce 提速顯著。Apache MapReduce 使用多個階段,因此,復雜的 Apache Hive 查詢將分解為四項或五項任務。Apache Tez 專為更複雜的查詢而設計,因此 Apache Tez 上的相同任務會在一項作業中執行,從而相較於 Apache MapReduce 提速顯著。
  • 使用 Amazon EMR,您可以選擇保留中繼存放區作為本機或將其外部化。EMR 提供與 AWS Glue 資料型錄、Amazon Aurora、Amazon RDS 和 AWS Lake Formation 的整合。Amazon EMR 可以直接從 Glue 或 Lake Formation 中提取資訊以填充中繼存放區。
  • 您可以從 Amazon S3 自動載入表格分區。在過去,若要匯入分區表,您需要單獨更改表格中每個個別分區的表格陳述式。Amazon EMR 現在包含適用於 Hive 語言的新陳述式類型:"alter table recover partitions"。 此陳述式讓您能夠輕鬆地將表格同時匯入到多個叢集中,而不必保留共用的中繼資料存放區。使用此功能時,可從外部程序存放資料的表格 (例如,日誌檔案) 進行讀取。
  • 您可以直接將資料寫入 Amazon S3。將資料寫入 Amazon S3 中的表格時,Amazon EMR 中安裝的 Hive 版本不會使用暫存檔,而是直接寫入 Amazon S3。這樣可大幅提高效能,但從 Hive 的角度而言,代表 HDFS 和 S3 的操作方式不同。如果表格位於 Amazon S3 中,則無法在相同陳述式內對同一個表格進行讀取和寫入。如果要更新 S3 中的表格,要在叢集的本機 HDFS 檔案系統中建立臨時表,將結果寫入該表格,然後將它們複製到 Amazon S3。
  • 您可以存取 Amazon S3 中的資源。Amazon EMR 中安裝的 Hive 版本允許您直接從 Hive 指令碼 (例如,add jar s3://elasticmapreduce/samples/hive-ads/libs/jsonserde.jar) 內參考資源,例如,自訂 map 和 reduce 操作的指令碼或 Amazon S3 中的其他程式庫。

問:支援哪些類型的 Hive 叢集?

Hive 支援兩種叢集類型:互動式和批次處理。在互動式模式下,客戶可以直接在主節點上以互動方式啟動叢集和執行 Hive 指令碼。一般而言,此模式用來執行臨機操作資料分析和應用程式開發。在批次處理模式下,Hive 指令碼儲存在 Amazon S3 中,並在啟動叢集時參考。一般而言,批次處理模式用於可重複的執行工作,例如產生報告。

問:如何啟動 Hive 叢集?

批次處理和互動式叢集都可從 AWS 管理主控台、EMR 命令列用戶端或 API 啟動。請參閱版本指南中的 Hive 部分,了解啟動 Hive 叢集的更多詳細資訊。

問:何時應使用 Hive?何時應使用PIG?

Hive 和 PIG 都提供高等級的資料處理語言,支援在大型資料集操作的複雜資料類型。Hive 語言是 SQL 的變體,因此更適合已熟悉 SQL 和關聯式資料庫的使用者使用。Hive 支援分區表,它們允許 Amazon EMR 叢集只提取與執行的查詢相關的表格分區,而不是執行整個表格掃描。PIG 和 Hive 都有查詢計劃優化功能。PIG 能在整個指令碼範圍內進行優化,而 Hive 查詢僅在陳述式層級進行優化。

選擇使用 Hive 或 PIG 最終還是取決於應用程式網域的確切要求及實作者和查詢撰寫者的偏好。

問:Amazon EMR 支援哪些版本的 Hive?

如需有關最新版 Hive on Amazon EMR 的資訊,請參閱文件

問:是否可以同時從兩個叢集寫入表格?

否,Hive 不支援同時寫入表格。您應避免同時寫入同一個表格,或在寫入表格時從表格讀取。Hive 在同時讀寫或同時寫入時會出現不具決定性的行為。

問:是否可以在叢集之間共用資料?

是。您可以在指令碼上撰寫 ‘create external table’ 陳述式,透過 Hive 指令碼讀取 Amazon S3 中的資料。您存取的每個外部資源都需要一個 create table 陳述式。

問:我應該執行一個大型叢集並在多個使用者之間共用,還是執行多個較小的叢集?

Amazon EMR 提供一個獨特的功能,讓您能夠同時使用兩種方法。一方面,大型叢集對於處理一般的批次處理工作負載可能較為有效。另一方面,如果您需要執行隨時間變化的臨機操作查詢或工作負載,可以選擇建立多個獨立的叢集,調校這些叢集使其適合共用 Amazon S3 中所儲存資料來源的特定任務。 您可以使用 EMR 受管擴展來最佳化資源使用。

問:是否可以存取本機檔案系統中的指令碼或 Jar 資源?

否,您必須將指令碼或 Jar 上傳到 Amazon S3 或叢集的主節點,才能進行參考。要上傳到 Amazon S3,您可以使用 s3cmd、jets3t 或 S3Organizer 等工具。

問:是否可執行一個持久性叢集以執行多個 Hive 查詢?

是。在手動終止模式下執行的叢集不會在 Hive 步驟間終止。要降低資料遺失的風險,我們建議定期保留您在 Amazon S3 中的所有重要資料。最好定期將工作傳輸到新的叢集,以測試從主節點故障進行恢復的程序。

問:多個使用者是否可在同一個來源資料上執行 Hive 步驟?

是。多個使用者在個別叢集上執行的 Hive 指令碼可能包含 create external table 陳述式,以同時匯入位於 Amazon S3 中的來源資料。

問:多個使用者是否可在同一個叢集中執行查詢?

是。在批次處理模式下,步驟會按順序執行。多個使用者可以將 Hive 步驟新增到同一個叢集;不過,步驟將按順序執行。在互動模式下,多個使用者可以登入到同一個叢集,並且同時執行 Hive 陳述式。

問:是否可在多個 AWS 使用者之間共用資料?

是。可以使用這裡描述的標準 Amazon S3 共享機制共享資料。

問:Hive 是否支援從 JDBC 存取?

是。Hive 提供 JDBC 磁碟機,可用於以程式設計方式執行 Hive 陳述式。要在叢集中啟動 JDBC 服務,您需要在 Amazon EMR 命令列用戶端中傳遞選擇性參數。此外,還需要建立一個 SSH 通道,因為安全群組不允許外部連線。

問:在 EMR AMI 中更新套件的程序是什麼?

第一次開機時,適用於 EMR 的 Amazon Linux AMI 會連接 Amazon Linux AMI yum 儲存庫以安裝安全性更新。您可以在使用自訂 AMI 時停用此功能,但基於安全理由,我們不建議這樣做。

問:是否可以在 EMR 叢集更新自己的套件?

是。您可以使用引導操作對叢集中的套件安裝更新。

問:是否可以使用 Hive 處理 DynamoDB 資料?

是。只需根據您的 DynamoDB 表定義外部 Hive 表即可。然後,可以使用 Hive 分析 DynamoDB 中儲存的資料,並將結果載回 DynamoDB 或在 Amazon S3 中存檔。如需詳細資訊,請參閱開發人員指南

使用 Hudi

問:什麼是 Apache Hudi?

Apache Hudi 是一個開放原始碼資料管理框架,可用於簡化增量資料處理和資料管道開發。Apache Hudi 可讓您在 Amazon S3 中以記錄層級管理資料簡化變更資料擷取 (CDC) 和串流資料擷取,並提供框架以處理需要記錄層級更新和刪除的資料隱私權使用案例。透過 Apache Hudi 儲存在 S3 中的資料集管理使用開放式儲存格式,可使用 Presto、Apache Hive、Apache Spark 和 AWS Glue Data Catalog 擷取,使用熟悉的工具,給您更貼近即時存取的感覺。

問:何時應該使用 Apache Hudi?

Apache Hudi 可協助您處理需要在 S3 上進行記錄級資料管理的使用案例。以下五個常見使用案例可從這些功能中獲益:

  1. 遵守要求組織移除使用者資料的資料隱私法,或在使用者選擇變更其資料使用方式的偏好設定時更新使用者偏好設定。Apache Hudi 讓您能夠使用 Apache Parquet 和 Apache Avro 等開放原始碼資料格式,對儲存在 S3 中的資料執行記錄級插入、更新和刪除操作。
  2. 使用即時資料串流,並套用企業系統中變更的資料擷取日誌。許多組織需要在 Amazon S3 中提供企業資料倉儲 (EDW) 和營運資料儲存 (ODS) 資料,以便 Apache Hive 和 Presto 之類的 SQL 引擎可以存取這些資料進行資料處理和分析。Apache Hudi 簡化了變更日誌的套用,並為使用者提供了近乎即時的資料存取。
  3. 恢復延遲或不正確的資料。延遲或不正確的資料需要恢復資料,並更新現有資料集以合併新的或更新的記錄。Apache Hudi 可讓您將記錄「更新插入」至現有資料集中,根據資料集中存在的記錄依靠框架來插入或更新記錄。
  4. 跟踪資料據集的變更並提供復原變更的功能。憑藉 Apache Hudi,對資料集做出的每次變更都會在提交時進行跟踪,並且可以輕鬆地復原,從而讓您可以尋找資料集的特定變更並將其「復原」。
  5. 簡化 S3 上的檔案管理。為確保有效地調整資料檔案的大小,客戶必須建立自訂解決方案,以監控眾多小型檔案,並將其重寫為更少的大型檔案。藉助 Apache Hudi,可以管理 S3 上的資料檔案,使用者只需設定最佳檔案大小即可儲存其資料,Hudi 將合併檔案以建立有效大小的檔案。
  6. 將增量寫入目標 Hudi 資料集。Hudi 資料集能夠以增量方式提取,這意味著從指定的即時時間開始,您可以全部獲取,以及僅獲取更新和新行。

問:如何建立 Apache Hudi 資料集?

Apache Hudi 資料集是使用 Apache Spark 建立的。建立資料集就像編寫 Apache Spark DataFrame 一樣簡單。可以選擇將 Apache Hudi 資料集中的中繼資料儲存在 AWS Glue 資料型錄或 Hive 中繼資料存放區,以簡化資料探索並與 Apache Hive 和 Presto 整合。

問:Apache Hudi 如何管理資料集?

使用 Apache Hudi 建立資料集時,您可以選擇資料集應針對哪種類型的資料存取模式進行最佳化。對於大量讀取的使用案例,您可以選擇「寫入時複製」資料管理政策,以針對頻繁讀取的資料集進行最佳化。此政策使用單欄式儲存格式來整理資料,並在寫入更新時合併現有資料和新的更新。針對寫入繁重的工作負載,Apache Hudi 採用「讀取時合併」資料管理策略,該策略使用單欄和列儲存格式的組合來整理資料,其中更新以列儲存格式附加至檔案,而合併則在讀取時執行以提供更新的結果。

問:如何寫入 Apache Hudi 資料集?

使用 Apache Spark 對 Apache Hudi 資料集做出變更。藉助 Apache Spark,可以使用 Spark DataSource API 對 Apache Hudi 資料集進行操作,從而讓您可以讀寫資料。可以使用相同的 DataSource API,來編寫包含新增資料或現有資料更新的 DataFrame。您還可以使用 Hudi DeltaStreamer 公用程式。

問:如何讀取 Apache Hudi 資料集?

您可以使用 Apache Spark、Apache Hive、Presto、Amazon Redshift Spectrum 或 Amazon Athena 來讀取資料。建立資料集時,您可以選擇在 AWS Glue 資料型錄或 Hive 中繼資料存放區中,發佈該資料集的中繼資料。若您選擇在中繼資料存放區中發佈中繼資料,則資料集看起來像是普通資料表,並且可以使用 Apache Hive 和 Presto 查詢該資料表。

問:使用 Apache Hudi 時應注意哪些考量或限制?

如需在 Amazon EMR 上使用 Apache Hudi 時的考量和限制完整清單,請參閱我們的 Amazon EMR 文件

問:現有資料如何與 Apache Hudi 配合使用?

若您現在要使用 Apache Hudi 來管理現有資料,則可以使用 Apache Hudi on Amazon EMR 隨附的匯入工具,輕鬆地將 Apache Parquet 資料轉換為 Apache Hudi 資料集,或者使用 Hudi DeltaStreamer 公用程式或 Apache Spark 將現有資料重新為 Apache Hudi 資料集。

使用 Impala

問:什麼是 Impala?

Impala 是 Hadoop 生態系統中的開放原始碼工具,適用於使用 SQL 語法的互動式、臨機操作查詢。它不使用 MapReduce,而是利用與傳統關聯式資料庫管理系統 (RDBMS) 中的引擎類似的大規模平行處理 (MPP) 引擎。利用此架構,您可以非常快速地查詢 HDFS 或 HBase 表中的資料,並利用 Hadoop 的功能處理不同資料類型,以及在執行時間提供結構描述。因此 Impala 適合用來進行互動式、低延遲分析。此外,Impala 使用 Hive 中繼儲存來保留有關輸入資料的資訊,包括分區名稱和資料類型。同時,Amazon EMR 上的 Impala 要求 AMI 執行 Hadoop 2.x 或更高版本。按一下這裡進一步了解 Impala。

問:使用 Amazon EMR 上執行的 Impala 可以執行哪些操作?

與在 Amazon EMR 使用 Hive 類似,在 Amazon EMR 使用 Impala,可以透過 SQL 語法實作複雜的資料處理應用程式。不過,在某些使用案例中,Impala 是為了更快的執行速度而建置的 (參閱下文)。透過 Amazon EMR,您可以將 Impala 做為可靠的資料倉儲來執行資料分析、監控和商業智慧等任務。以下是三個使用案例:

  • 在長時間執行的叢集上執行臨機操作查詢時,使用 Impala 而不使用 Hive。Impala 將互動式查詢的時間縮短到幾秒之間,使其成為快速調查的最佳工具。您可以在執行批次 MapReduce 工作流程的相同叢集上執行 Impala,在長時間執行的分析叢集上將 Impala 與 Hive 和 Pig 搭配使用,或是建立專門針對 Impala 查詢調校的叢集。
  • 在暫時性 Amazon EMR 叢集上執行批次處理 ETL 任務時,使用 Impala 而不使用 Hive。對於許多查詢,Impala 比 Hive 的速度更快,可以為這些工作負載提供更好的效能。與 Hive 類似,Impala 也使用 SQL,因此可以輕鬆地將查詢從 Hive 修改為 Impala。
  • 將 Impala 與第三方商業智慧工具搭配使用。將用戶端 ODBC 或 JDBC 驅動程式與您的叢集連接在一起,以便將 Impala 做為強大的視覺化工具和儀表板的引擎。

您可以在 Amazon EMR 中建立批次處理和互動式 Impala 叢集。例如,您可以讓長時間執行的 Amazon EMR 叢集執行 Impala,用於臨機操作、互動式查詢,或使用暫時性的 Impala 叢集來執行快速的 ETL 工作流程。

問:Impala 與傳統的 RDBMS 有何區別?

傳統的關聯式資料庫系統具有交易語意和資料庫不可部分完成性、一致性、隔離性和耐久性 (ACID) 屬性。它們還允許對表格進行索引和快取,可以非常快速地擷取少量資料,可快速更新少量資料,並可強制執行參考完整性限制。一般而言,它們在一部大型機器上執行,並且不支援對複雜的使用者定義資料類型執行操作。Impala 使用與 RDBMS 中類似的分散式查詢系統,但會查詢儲存在 HDFS 中的資料,並使用 Hive 中繼儲存來保存有關輸入資料的資訊。與 Hive 相同,會在執行時間提供查詢的結構描述,可以更輕鬆地變更結構描述。另外,Impala 可以查詢各種複雜資料類型並執行使用者定義函數。不過,因為 Impala 在記憶體內處理資料,所以務必了解叢集的硬體限制並優化查詢以實現最佳效能。

問:Impala 與 Hive 有何區別?

Impala 使用大規模平行處理 (MPP) 引擎執行 SQL 查詢,而 Hive 使用 MapReduce 執行 SQL 查詢。Impala 少了 Hive 用於建立 MapReduce 任務的負荷,其查詢速度比 Hive 快數倍。不過,Impala 使用大量的記憶體資源,而且叢集的可用記憶體為任何查詢可使用的記憶體量設定了限制。Hive 沒有這種方式的限制,可以利用相同的硬體順利地處理更大的資料集。一般而言,您應將 Impala 用於快速、互動式查詢,而 Hive 則更適用於大型資料集的 ETL 工作負載。Impala 針對速度而建置,非常適用於臨機操作調查,但需要大量記憶體來執行耗費大量資源的查詢或處理非常大型的資料集。由於上述限制,完成度重要性優於速度的工作負載,建議使用 Hive。按一下這裡查看 Impala 和 Hive 之間的一些效能基準。

問:是否可使用 Hadoop 1?

否,Impala 需要 Hadoop 2,無法在使用執行 Hadoop 1.x 的 AMI 的叢集上執行。

問:我的 Impala 叢集應該使用哪些執行個體類型?

為了獲得最佳的 Impala 使用體驗,我們建議您的叢集使用經過記憶體優化的執行個體。不過,我們也已經說明,在使用標準執行個體類型時獲得的效能優於 Hive。我們建議閱讀 Amazon EMR Developer's Guide 的 Performance Testing and Query Optimization 部分,以針對您的資料集和查詢類型,為叢集所需的記憶體資源進行更合理的預估。計算所需的記憶體時必須考量壓縮類型、分區和實際查詢 (加入數、結果大小等) 等要素。您可以使用 EXPLAIN 陳述式預估 Impala 查詢所需的記憶體和其他資源。

問:如果查詢時記憶體不足,會發生什麼情況?

如果記憶體不足,查詢會失敗,而且受影響節點上安裝的 Impala 協助程式會關閉。然後,Amazon EMR 會重新啟動該節點上的協助程式,以便 Impala 準備執行其他查詢。節點上 HDFS 中的資料仍然可以使用,因為關閉的僅是該節點上執行的協助程式,而非整個節點本身。對於使用 Impala 的臨機操作分析,查詢時間通常可以按秒計算;因此,如果某個查詢失敗,您可以快速發現問題,並且可以迅速接著提交新查詢。

問:Impala 是否支援使用者定義的函數?

是,Impala 支援使用者定義的函數 (UDF)。您可以用 Java 或 C++ 編寫專用於 Impala 的 UDF。另外,您可以修改為 Hive 建立的 UDF 或使用者定義的彙總函數,以便與 Impala 搭配使用。有關 Hive UDF 的資訊,請按一下這裡

問:供 Impala 查詢的資料儲存在何處?

Impala 會查詢 HDFS 或 HBase 表中的資料。

問:是否可在叢集上同時執行 Impala 和 MapReduce?

是,您可以設定具有 Impala 和 MapReduce 的多租用戶叢集。但是,您一定要在 Hadoop 2.x 上使用 YARN 來為每個應用程式分配資源 (記憶體、磁碟和 CPU)。分配的資源應根據您計劃在每個應用程式上執行的任務需求而定。

問:Impala 是否支援 ODBC 和 JDBC 驅動程式?

雖然可以使用 ODBC 驅動程式,但 Impala 也是適合透過 JDBC 連接的第三方工具的最佳引擎。您可以從下列位置下載和安裝 Impala 用戶端 JDBC 驅動程式:http://elasticmapreduce.s3.amazonaws.com/libs/impala/1.2.1/impala-jdbc-1.2.1.zip。在已安裝商業智慧工具的用戶端電腦中,使用連接埠 21050 上的 SSH 或 VPN,將 JDBC 驅動程式連接到 Impala 叢集的主節點。如需詳細資訊,請參閱 Open an SSH Tunnel to the Master Node

使用 Pig

問:什麼是 Apache Pig?

Pig 是在 Hadoop 上執行的一種開放原始碼分析套件。Pig 由類似 SQL 的語言 Pig Latin 操作,允許使用者建構、摘要和查詢 Amazon S3 中儲存的資料來源。與 SQL 操作類似,Pig Latin 也新增 map/reduce 函數的第一級支援,及複雜且可擴展的使用者定義資料類型。這個功能讓您能夠處理複雜甚至非結構化的資料來源,例如,文字文件和日誌檔案。Pig 允許透過以 Java 編寫的使用者定義函數及透過 Amazon S3 中的儲存進行部署,以執行使用者擴展。

問:使用 Amazon EMR 上執行的 Pig 可以執行哪些操作?

使用 Pig 搭配 Amazon EMR 時,您可以利用類似 SQL 的熟悉語言和 Amazon EMR 中易於使用的工具,實作複雜的資料處理應用程式。透過 Amazon EMR,您可以將 Pig 應用程式轉換為可靠的資料倉儲以執行任務,如資料分析、監控和商業智慧任務。

問:如何開始使用在 Amazon EMR 上執行的 Pig?

最好的入門方法就是參閱這裡的書面文件。

問:在 Pig 中是否有專為 Amazon EMR 設計的新功能?

是。與 Amazon EMR 搭配使用時,有三項新功能可讓 Pig 變得更加強大,包括:

a/ 存取多個檔案系統。預設情況下,無論是用於輸入、輸出和暫存資料的 HDFS 存放還是 S3 儲存貯體,Pig 任務只能存取一個遠端檔案系統。EMR 對 Pig 進行了擴展,因此任何任務都能根據需要存取任意數量的檔案系統。這樣做的好處是,任務內的暫時資料將一直儲存在本機 HDFS 中,能夠提升效能。

b/ 從 S3 載入資源。EMR 對 Pig 進行了擴展,因此自訂的 JAR 和指令碼可以來自 S3 檔案系統,例如 "REGISTER s3:///my-bucket/piggybank.jar"

c/ 更多用於字串和日期時間處理的 Piggybank 函數。

問:支援哪些類型的 Pig 叢集?

Pig 支援兩種叢集類型:互動式和批次處理。在互動式模式下,客戶可以直接在主節點上以互動方式啟動叢集和執行 Pig 指令碼。一般而言,此模式用來執行臨機操作資料分析和應用程式開發。在批次處理模式下,Pig 指令碼儲存在 Amazon S3 中,在啟動叢集時參考。一般而言,批次處理模式用於可重複的執行工作,例如產生報告。

問:如何啟動 Pig 叢集?

批次處理和互動式叢集都可從 AWS 管理主控台、EMR 命令列用戶端或 API 啟動。

問:Amazon EMR 支援哪些版本的 Pig?

Amazon EMR 支援 Pig 的多個版本

問:是否可從兩個叢集同時寫入 S3 儲存貯體?

是,可從兩個並行叢集寫入同一個儲存貯體。

問:是否可在叢集之間共用 S3 中的輸入資料?

是,可從兩個並行叢集讀取 S3 中的相同資料。

問:是否可在多個 AWS 使用者之間共用資料?

是。可以使用這裡 http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html 描述的標準 Amazon S3 共用機制共用資料

問:我應該執行一個大型叢集並在多個使用者之間共用,還是執行多個較小的叢集?

Amazon EMR 提供一個獨特的功能,讓您能夠同時使用兩種方法。一方面,大型叢集對於處理一般的批次處理工作負載可能較為有效。另一方面,如果您需要執行隨時間變化的臨機操作查詢或工作負載,可以選擇建立多個獨立的叢集,調校這些叢集使其適合共用 Amazon S3 中所儲存資料來源的特定任務。

問:是否可以存取本機檔案系統中的指令碼或 Jar 資源?

否,您必須將指令碼或 Jar 上傳到 Amazon S3 或叢集的主節點,才能進行參考。要上傳到 Amazon S3,您可以使用 s3cmd、jets3t 或 S3Organizer 等工具。

問:是否可執行一個持久性叢集以執行多個 Pig 查詢?

是。在手動終止模式下執行的叢集不會在 Pig 步驟間終止。要降低資料遺失的風險,我們建議您定期保留 Amazon S3 中的所有重要資料。最好定期將工作傳輸到新的叢集,以測試從主節點故障進行恢復的程序。

問:Pig 是否支援從 JDBC 存取?

否,Pig 不支援透過 JDBC 存取。 

使用 HBase

問:什麼是 Apache HBase?

HBase 是一種仿效 Google BigTable 的開放原始碼、非關聯式、分散式資料庫。它是 Apache 軟體基金會 Hadoop 專案開發的一部分,在 Hadoop 分散式檔案系統 (HDFS) 上執行,為 Hadoop 提供與 BigTable 類似的功能。HBase 為您提供一種可儲存大量疏鬆資料的容錯、高效率方法,此方法採用以欄為基礎的壓縮和儲存方式。此外,因為資料儲存在記憶體內而非磁碟上,所以還可以透過 HBase 快速查詢資料。HBase 在連續寫入操作方面已經過優化,且批次插入、更新和刪除等操作的效率很高。HBase 可與 Hadoop 無縫搭配,不但共享檔案系統,且做為 Hadoop 任務的直接輸入和輸出。HBase 也與 Apache Hive 整合,對 HBase 表啟用類似 SQL 的查詢,與以 Hive 為基礎的表格結合,以及支援 Java 資料庫連接 (JDBC)。您可以在這裡進一步了解 Apache HBase

問:在 HBase 中是否有專為 Amazon EMR 設計的新功能?

藉助 Amazon EMR,您可以在 Amazon S3 上使用 HBase 將叢集的 HBase 根目錄和中繼資料直接存放至 Amazon S3,並建立僅供讀取複本和快照。若要進一步了解,請參閱我們的文件

問:Amazon EMR 支援哪些版本的 HBase?

您可以在這裡查看 Amazon EMR 支援的最新 HBase 版本。

Kinesis 連接器

問:新增到 Kinesis 的 EMR 連接器支援什麼功能?

該連接器支援 EMR 直接從 Kinesis 串流讀取和查詢資料。現在,您可以使用現有的 Hadoop 生態系統工具 (如 Hive、Pig、MapReduce、Hadoop Streaming 和 Cascading) 來執行 Kinesis 串流的批次處理。

問:新增到 Kinesis 的 EMR 連接器能支援我完成哪些之前無法完成的任務?

讀取和處理來自 Kinesis 串流的資料需要編寫、部署和維護獨立的串流處理應用程式。這些需要耗費大量的時間和精力。但是,使用此連接器,您只需編寫一個簡單的 Hive 或 Pig 指令碼就可以開始讀取和分析 Kinesis 串流。這表示您可以使用 SQL 來分析 Kinesis 串流! 當然,也可以使用其他 Hadoop 生態系統工具。您不必開發或維護一組新的處理應用程式。

問:此功能對哪些人有用?

這個整合對以下各類的使用者有用:

  • 有興趣使用此廣泛的 Hadoop 生態系統工具來分析 Kinesis 串流的 Hadoop 使用者。
  • 正在尋求簡單方法來增強效能和正在執行 Kinesis 資料的串流處理和 ETL 的 Kinesis 使用者。
  • 希望使用熟悉的工具,如 SQL (透過 Hive) 或指令碼撰寫語言,如 Pig,對 Kinesis 串流中的資料執行臨機操作分析的商業分析師和 IT 專業人員。

問:這種整合有哪些使用案例?

以下為此整合支援的代表性使用案例:

  • 串流處理日誌分析:您可以按區域、瀏覽器和存取網域分析串流處理 Web 日誌,以便每隔幾分鐘產生一個前 10 大錯誤類型清單。
  • 複雜資料處理工作流程:您可以將儲存在 S3、Dynamo DB 表和 HDFS 中的資料加入 Kinesis 串流中。您可以編寫結合 Kinesis 點擊流資料的查詢,並將廣告活動資訊儲存在 DynamoDB 表中,以找出特定網站上顯示的最有效廣告類別。
  • 臨機操作查詢:您可以定期將來自 Kinesis 的資料載入 HDFS 中並做為本機 Impala 表使用,用於快速的互動式分析查詢。

問:需要使用哪個 EMR AMI 版本才能使用此連接器?

您需要使用 EMR AMI 的 3.0.4 版和更新版本。

問:此連接器是否為獨立的工具?

否,它是 Amazon Hadoop 分發的內建元件,EMR AMI 的 3.0.4 版和更新版本都提供此元件。客戶只需使用 3.0.4 版或更新版本的 AMI 快速建置一個叢集,就可以開始使用此功能。

問:允許 EMR 從 Kinesis 串流讀取資料需要哪種資料格式?

EMR Kinesis 整合不指定資料格式。您可以讀取任何格式的資料。個別 Kinesis 記錄會以標準記錄的形式顯示給 Hadoop,該記錄可使用任何 Hadoop MapReduce 架構讀取。Hive、Pig 和 Cascading 等個別架構已內建在協助序列化和還原序列化的元件中,因此開發人員能夠輕鬆查詢多種格式的資料,無須實作自訂程式碼。例如,Hive 使用者可透過在定義表格時指定適當的 Hive SerDe,從 JSON 檔案、XML 檔案和 SEQ 檔案讀取資料。Pig 擁有類似的元件 Loadfunc/Evalfunc,而 Cascading 的類似元件為 Tap。Hadoop 使用者可以利用此廣泛的 Hadoop 配接器生態系統,無須編寫格式特定程式碼。您還可以實作自訂還原序列化格式,讀取其中任何一個工具的網域特定資料。

問:在 EMR 中,如何使用 Hive 來分析 Kinesis 串流?

建立一個參考 Kinesis 串流的表格。然後,您可以像分析 Hive 中的其他任何表格一樣分析這個表格。請參閱我們的教學頁面了解更多詳細資訊。

問:使用 Hive 時,如何建立結合 Kinesis 串流資料和其他資料來源的查詢?

首先,建立一個參考 Kinesis 串流的表格。Hive 表建立完成後,您可以將它與對應到其他資料來源 (如 Amazon S3、Amazon Dynamo DB 和 HDFS) 的表格結合起來。這會有效地將來自 Kinesis 串流的資料加入其他資料來源中。

問:此整合是否僅用於 Hive?

否,您可以使用 Hive、Pig、MapReduce、Hadoop 串流以及 Cascading。

問:如何設定要在 Kinesis 串流上執行的已排定任務?

EMR Kinesis 輸入連接器提供各種功能,協助您設定和管理傳統排程引擎 (如 Cron) 中的已排定週期性任務。例如,您可以開發一個每 N 分鐘執行一次的 Hive 指令碼。在任務的設定參數中,您可以為任務指定一個邏輯名稱。邏輯名稱是一個標籤,會通知 EMR Kinesis 輸入連接器,該任務的個別執行個體是同一個週期性排程的成員。邏輯名稱允許程序利用反覆項目,以下會加以說明。

因為 MapReduce 是批次處理架構,所以要使用 EMR 來分析 Kinesis 串流,連續的串流就需分批進行處理。每個批次稱為一個反覆項目。每個反覆項目會指派一個以 0 開頭的號碼。每個反覆項目的邊界由起始序號和結尾序號定義。然後 EMR 會按順序處理反覆項目。

如果一次嘗試發生故障,EMR Kinesis 輸入連接器將在邏輯名稱內重試該反覆項目 (從該反覆項目的已知起始序號開始)。此功能確保同一個反覆項目的連續嘗試與之前的嘗試具有完全相同的 Kinesis 串流輸入記錄。這可保證 Kinesis 串流的等冪 (一致性) 處理。

您可以在個別的 Hadoop 工具中,將邏輯名稱和反覆項目指定為執行時間參數。例如,在教學的 "Running queries with checkpoints" 部分,程式碼範例顯示一個排定的 Hive 查詢,為查詢指定邏輯名稱,並且在每次執行任務後增加一個反覆項目。

此外,教學中還提供一個範例 Cron 排程指令碼。

問:邏輯名稱的中繼資料和反覆項目儲存在何處?

允許 EMR Kinesis 輸入連接器在排定的週期性工作流程中使用的中繼資料儲存在 Amazon DynamoDB 中。您必須佈建一個 Amazon Dynamo DB 表,並指定其作為 Hadoop 任務的輸入參數。務必為該表設定適當的 IOPS 以啟用此整合。請參閱入門教學,了解更多有關設定 Amazon Dynamo DB 表的資訊。

問:當反覆項目處理失敗時,會出現什麼情況?

在 Kinesis 串流中,反覆項目識別碼是對應到特定邊界 (開頭和結尾序號) 的值,由使用者提供。這些邊界對應的資料會在 MapReduce 任務的對應階段載入。此階段由架構管理,並在任務失敗時自動重新執行 (預設執行三次)。如果重試失敗,您仍可以選擇從最後一次成功的資料邊界或通過的資料邊界開始重試處理。此行為透過處理期間提供的 kinesis.checkpoint.iteration.no 參數控制。請參考入門教學,了解有關如何為 Hadoop 生態系統中不同工具設定這個值的詳細資訊。

問:是否能在同一個反覆項目中執行多個查詢?

是,您可以在連續處理過程中設定 kinesis.checkpoint.iteration.no 參數,指定之前執行的反覆項目。此實作可確保同一個反覆項目的連續執行與之前的執行具有完全相同的 Kinesis 串流輸入記錄。

問:如果反覆項目中的記錄在 Kinesis 串流中到期,會出現什麼情況?

如果反覆項目的開始序號和/或結尾序號屬於已在 Kinesis 串流中到期的記錄,則 Hadoop 任務會失敗。您需要使用其他邏輯名稱來處理 Kinesis 串流的開始資料。

問:是否能將資料從 EMR 推送到 Kinesis 串流中?

否,EMR Kinesis 連接器目前不支援將資料回寫到 Kinesis 串流中。

問:Kinesis 的 EMR Hadoop 輸入連接器是否支援連續串流處理?

Hadoop MapReduce 架構是批次處理系統。因此,不支援連續查詢。不過,有一組新興的 Hadoop 生態系統架構,例如 Twitter Storm 和 Spark 串流,可讓開發人員建置適用於連續串流處理的應用程式。Kinesis 的 Storm 連接器可在這裡的 GitHub 上取得,您還可以在這裡找到說明如何在 EMR 上設定 Spark 串流和執行連續查詢的教學。

此外,開發人員還可以利用 Kinesis 用戶端程式庫來開發即時串流處理應用程式。您可以在這裡的 Kinesis 文件中找到有關開發自訂 Kinesis 應用程式的詳細資訊。

問:是否能指定存取登入資料,以讀取在其他 AWS 帳戶中管理的 Kinesis 串流?

是。只要指定適當的帳戶存取登入資料 (擁有 Kinesis 串流的帳戶),就可以讀取來自其他 AWS 帳戶的串流。預設情況下,Kinesis 連接器會利用建立叢集時指定的存取登入資料,此資料由使用者提供。您可以設定 kinesis.accessKey 和 kinesis.secretKey 參數來覆寫這些登入資料,以便從其他 AWS 帳戶存取串流。以下範例說明如何在 Hive 和 Pig 中設定 kinesis.accessKey 和 kinesis.secretKey 參數。

Hive 程式碼範例:
...
STORED BY
'com.amazon.emr.kinesis.hive.KinesisStorageHandler'
TBLPROPERTIES(
"kinesis.accessKey"="AwsAccessKey",
"kinesis.secretKey"="AwsSecretKey",
);

Pig 程式碼範例:

raw_logs = LOAD 'AccessLogStream' USING com.amazon.emr.kinesis.pig.Kin
esisStreamLoader('kinesis.accessKey=AwsAccessKey', 'kinesis.secretKey=AwsSecretKey'
) AS (line:chararray);

問:是否能在一個 Kinesis 串流中執行多個平行查詢? 對效能是否有影響?

是,客戶透過為每個查詢使用單獨的邏輯名稱,可以在同一個串流中執行多個平行查詢。不過,從 Kinesis 串流內的碎片中讀取資料受到每秒 2 MB 的速率限制。因此,如果在同一串流上執行 N 個並行查詢,則每個查詢將在串流上獲得每個碎片約 (2/N) MB/秒的輸出率。這可能會降低處理速度,有些情況下,還會導致查詢失敗。

問:是否能在 EMR 中加入並分析多個 Kinesis 串流?

是,例如在 Hive 中,您可以建立兩個對應到不同 Kinesis 串流的表,並在兩個表之間建立連接。

問:EMR Kinesis 連接器是否會處理 Kinesis 擴展事件,如合併和分割事件?

是。此實作會處理分割和合併活動。Kinesis 連接器將個別 Kinesis 碎片 (Kinesis 串流內的擴展邏輯單元) 與 Hadoop MapReduce 對應任務相繫結。在反覆項目的邏輯期間內,串流內的每個唯一碎片都將產生一個確切的對應任務。如果發生碎片分割或合併事件,Kinesis 將佈建新的唯一碎片 ID。因此,MapReduce 架構會佈建更多對應任務,以便從 Kinesis 讀取內容。所有內容對使用者而言都是透明的。

問:如果我的串流中有一些「無回應」期間,會發生什麼情況?

此實作允許您設定名為 kinesis.nodata.timeout 的參數。例如,假設有一個情況,kinesis.nodata.timeout 設為 2 分鐘,同時您希望每隔 10 分鐘執行一次 Hive 查詢。此外,假設從上次反覆項目後 (10 分鐘之前),一些資料已寫入串流中。不過,目前沒有新記錄到達,也就是說,串流內是無回應的。在這種情況下,當查詢的目前反覆項目啟動時,Kinesis 連接器將發現沒有即將到達的新記錄。連接器將使該串流保持輪詢 2 分鐘,如果該時間間隔內沒有記錄到達,則停止輪詢並僅處理目前串流批次中已讀取的記錄。不過,如果新記錄在 kinesis.nodata.timeout 時間間隔用完之前到達,則連接器將等待參數 kinesis.iteration.timeout 對應的額外時間間隔。請參閱教學了解如何定義這些參數。

問:如何偵錯在每次反覆項目中持續失敗的查詢?

如果處理失敗,您可以利用在偵錯 Hadoop 任務時目前所用的相同工具。包括協助識別和存取錯誤日誌的 Amazon EMR Web 主控台。有關偵錯 EMR 任務的詳細資訊,請參閱這裡

問:如果指定沒有存取權限的 DynamoDB 表,會發生什麼情況?

任務會失敗,任務的錯誤日誌會顯示例外狀況。

問:如果任務沒有失敗,但是 DynamoDB 的檢查點發生失敗,會發生什麼情況?

任務會失敗,任務的錯誤日誌會顯示例外狀況。

問:如何將從 Kinesis 串流到 EMR 的讀取輸送量最大化?

Kinesis 串流的輸送量會隨著所用執行個體的大小以及 Kinesis 串流中的記錄大小而增加。我們建議您在此功能使用 m1.xlarge 以及更大的執行個體來處理主節點和核心節點。 

服務水準協議

問︰什麼是 Amazon EMR 服務水準協議?

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

進一步了解 Amazon EMR 定價

瀏覽定價頁面
準備好開始建立?
開始使用 Amazon EMR
還有其他問題嗎?
聯絡我們