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

開始使用 Amazon EMR

建立免費帳戶

需要協助嗎?詢問我們!

elastic

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

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

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

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

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

Amazon EC2 競價型執行個體整合:Amazon EC2 競價型執行個體可讓您針對 Amazon EC2 容量出價。您只需指定願意為執行某特定執行個體類型支付的最高小時價格。只要您的出價超過競價市場價格,就可以繼續使用該執行個體,而且一般情況下只需支付一部分的隨需價格。競價型價格會隨著執行個體的供需而浮動,但您支付的價格不會超過您所指定的最高價格。Amazon EMR 可讓您輕鬆使用競價型執行個體,所以可以同時節省時間和金錢。Amazon EMR 叢集包括執行 HDFS 的「核心節點」和不執行 HDFS 的「任務節點」;任務節點非常適合競價型執行個體,因為競價型價格上漲的話,您會失去這些執行個體,但不會損失 HDFS 中存放的資料。(進一步了解關於核心節點和任務節點的資訊。)

Amazon EC2 預留執行個體整合:使用 Amazon EC2 預留執行個體可維持彈性運算的優勢,同時降低成本並預留容量。利用預留執行個體,您只需支付價格低廉的一次性費用,即可在該執行個體的每秒使用費上獲得大幅折扣。Amazon EMR 可讓您輕鬆利用預留執行個體,以節省多達 65% 的隨需價格。

彈性:因為 Amazon EMR 可讓您輕鬆地自動擴展叢集,所以無須佈建多餘的容量。例如,您可能不知道叢集未來 6 個月將處理多少資料,或者您可能會有峰值處理需求。使用 Amazon EMR,您無須揣測未來的需求,或者為峰值需求佈建容量,因為您隨時可以輕鬆地新增/移除容量。

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

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

DetailsPage_EMR-Diagram

Amazon S3Amazon 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 生產叢集,兩個叢集都使用同一個輸入資料集。

Hadoop 分散式檔案系統 (HDFS)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 的完整加密。

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

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

Amazon EMR 支援各種強大、經過驗證的 Hadoop 工具,如 Hive、Pig、HBase 和 Impala。此外,它還可以使用引導操作來執行 Hadoop MapReduce 之外的分散式運算架構,如 Spark 或 Presto。您也可以使用 Hue 和 Zeppelin 作為 GUI,以與叢集上的應用程式互動。

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 和 Amazon EMR 的相關資訊

Pig 是在 Hadoop 上執行的一種開放原始碼分析套件。Pig 使用 Pig Latin (一種類似 SQL 的語言) 進行操作,這可讓使用者建構、摘要和查詢資料。與 SQL 操作類似,Pig Latin 也新增 map/reduce 函數的第一級支援,及複雜且可擴展的使用者定義資料類型。這個功能讓您能夠處理複雜和非結構化的資料來源,例如,文字文件和日誌檔。Pig 支援透過以 Java 編寫的使用者定義函數進行使用者擴展。Amazon EMR 對 Pig 進行了許多改進,包括使用多個檔案系統 (通常 Pig 只能存取一個遠端檔案系統) 的功能、從 Amazon S3 載入客戶 JAR 和指令碼的功能 (例如,"REGISTER s3:///my-bucket/piggybank.jar") 以及用於處理字串和日期時間的額外功能。進一步了解 Pig 和 Amazon EMR 的相關資訊

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

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

Impala 是 Hadoop 生態系統中的開放原始碼工具,適用於使用 SQL 語法的互動式、臨機操作查詢。它不使用 MapReduce,而是利用與傳統關聯式資料庫管理系統 (RDBMS) 中的引擎類似的大規模平行處理 (MPP) 引擎。進一步了解 Impala 和 Amazon EMR 的相關資訊

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

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

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

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

Oozie 是一種 Hadoop 工作流程排程器,讓您可以建立動作的有向無環圖 (DAG)。您也能輕鬆以動作或時間來觸發 Hadoop 工作流程。進一步了解 Amazon EMR 上 Oozie 的相關資訊

Tez 是 Hadoop YARN 上的一種執行框架,可從優化過的查詢計劃和增強的資源管理提供快速效能。您可以使用 Tez 搭配 Apache Hive 與 Apache Pig 來代替 Hadoop MapReduce,而且您可以使用 Tez UI 以視覺化方式呈現執行計劃。進一步了解 Amazon EMR 上的 Tez

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

其他:Amazon EMR 還支援其他各種常用的應用程式和工具,如 R、Apache MXNet (深度學習)、Mahout (機器學習)、Ganglia (監控)、Accumulo (安全的 NoSQL 資料庫)、Sqoop (關聯式資料庫連接器)、HCatalog (表格和儲存管理) 等。Amazon EMR 團隊負責維護引導操作的開放原始碼儲存庫,該儲存庫可以用於安裝其他軟體、設定叢集,或者在編寫您自己的引導操作時作為範例使用。

調整叢集:您可以根據應用程式的要求,選擇要在叢集中佈建的 EC2 執行個體類型 (標準型、記憶體增強型、CPU 增強型、高 I/O 等等)。您擁有每個執行個體的根存取權限,可完全自訂叢集以滿足您的需求。進一步了解支援的 Amazon EC2 執行個體類型的相關資訊

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

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

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

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

Cascading:Cascading 是一種開放原始碼 Java 程式庫,可提供用於建立和執行 Hadoop MapReduce 應用程式的查詢 API、查詢規劃器和任務排程器。與其他原生 Hadoop 應用程式類似,使用 Cascading 開發的應用程式會編譯且封裝成標準 Hadoop 相容 JAR 檔。進一步了解 Cascading 和 Amazon EMR 的相關資訊

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

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

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

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

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

Hadoop 串流:Hadoop 串流是 Hadoop 隨附的一種公用程式,可讓您以非 Java 語言開發 MapReduce 可執行檔。串流是以 JAR 檔的形式進行實作。進一步了解使用 Amazon EMR 進行 Hadoop 串流的相關資訊

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

Amazon EMR 可與各式各樣的第三方軟體工具搭配使用:

資料傳輸

監控

效能調校

圖形化 IDE

Hadoop 分發

BI/視覺化

商業智慧

資料探索

BI/視覺化

圖形化 IDE

BI/視覺化