Amazon EMR 上的 Apache Hadoop

為什麼選擇 EMR 上的 Apache Hadoop?

Apache™ Hadoop® 是一個開放原始碼軟體專案,可用於有效率地處理大型資料集。Hadoop 不使用單一大型電腦來處理和存放資料,而是將商用硬體結合成叢集,以平行方式分析大量資料集。

Hadoop 生態系統提供能滿足您分析工作負載需求的各種應用程式和執行引擎。 針對執行 Hadoop 及 Hadoop 生態系統中其他應用程式的 Amazon EC2 執行個體,Amazon EMR 可讓您輕鬆建立和管理這些執行個體完全設定好的彈性叢集。

Hadoop 生態系統中的應用程式和框架

Hadoop 通常是指實際的 Apache Hadoop 專案,其中包括 MapReduce (執行框架)、YARN (資源管理員) 及 HDFS (分散式儲存)。您也可以安裝 Apache Tez,這是可用來取代 Hadoop MapReduce 做為執行引擎的新一代架構。Amazon EMR 也包含 EMRFS,這是允許 Hadoop 將 Amazon S3 作為儲存層的連接器。

然而,Hadoop 生態系統還提供其他應用程式和框架,包括可啟用低延遲查詢的工具、可進行互動式查詢的 GUI 與各種界面 (如 SQL),以及分散式 NoSQL 資料庫。Hadoop 生態系統包括許多專門針對在 Hadoop 核心元件上建置其他功能所設計的開放原始碼工具,而您可以使用 Amazon EMR 輕鬆地在叢集上安裝和設定 Hive、Pig、Hue、Ganglia、Oozie 和 HBase 等工具。除了 Amazon EMR 上的 Hadoop 之外,您也可以執行其他架構,如用於記憶體內處理的 Apache Spark 或用於互動式 SQL 的 Presto

Hadoop:基本元件

Amazon EMR 以程式設計方式在叢集的節點之間安裝和設定 Hadoop 專案中的應用程式,包括 Hadoop MapReduce、YARN、HDFS 和 Apache Tez

Hadoop MapReduce 和 Tez 是 Hadoop 生態系統中的執行引擎,處理工作負載時會使用架構將任務分成數個小工作,以便分發到 Amazon EMR 叢集中的各個節點。它們的建置原理是預期叢集中的任何特定機器都可能隨時故障,且旨在提供容錯能力。如果執行任務的伺服器故障,Hadoop 會在另一部機器重新執行該任務,直到完成為止。

您可以使用 Java 撰寫 MapReduce 和 Tez 程式、使用 Hadoop 串流以平行的方式執行自訂指令碼、利用 Hive 和 Pig 透過 MapReduce 和 Tez 獲得較高層級的抽象,或者使用其他工具與 Hadoop 互動。

從 Hadoop 2 開始,資源管理是由 Yet Another Resource Negotiator (YARN) 負責管理。YARN 會追蹤叢集間的所有資源,並確保以動態方式分配這些資源,來完成您所處理的工作中的各項任務。YARN 能夠管理 Hadoop MapReduce 和 Tez 工作負載,以及 Apache Spark 等其他分散式架構。

透過在 Amazon EMR 叢集使用 EMR 檔案系統 (EMRFS),您可以利用 Amazon S3 作為 Hadoop 的資料層。Amazon S3 是高度可擴展、低成本且針對持久性所設計,因此成為大數據處理的絕佳資料存放區。將資料存放在 Amazon S3 即可去耦運算層與儲存層,讓您針對工作負載所需的 CPU 和記憶體的數量來調整 Amazon EMR 叢集的大小,而不是在叢集中建立額外的節點來最大化叢集上的儲存。此外,當 Amazon EMR 叢集閒置時可以終止它以節省成本,同時資料仍保留在 Amazon S3 中。

EMRFS 已針對 Hadoop 進行優化,可透過符合效能的方式直接平行讀取和寫入 Amazon S3,而且可以處理使用 Amazon S3 伺服器端和用戶端加密方法加密的物件。EMRFS 讓您使用 Amazon S3 作為資料湖,而 Amazon EMR 中的 Hadoop 可作為彈性查詢層。

Hadoop 也包含分散式儲存系統,就是 Hadoop 分散式檔案系統 (HDFS),此系統以大型區塊在叢集的本機磁碟間存放資料。HDFS 有一個可設定的複寫係數 (預設值為 3 倍),提供增強的可用性和耐久性。HDFS 會在節點故障和加入新節點時監控複寫,並且平衡節點間的資料。

HDFS 會隨 Hadoop 自動安裝在 Amazon EMR 叢集上,而您可以使用 HDFS 搭配 Amazon S3 來存放您的輸入和輸出資料。您可以使用 Amazon EMR 安全組態輕鬆加密 HDFS。此外,Amazon EMR 會設定 Hadoop 使用 HDFS 和本機磁碟來存放 Hadoop MapReduce 任務期間建立的中繼資料,即使輸入資料位於 Amazon S3 中也是一樣。

Amazon EMR 上 Hadoop 的優點

您可以動態且快速初始化新的 Hadoop 叢集,也可以新增伺服器到現有的 Amazon EMR 叢集,以大幅減少將資源提供給使用者和資料科學家的時間。在 AWS 平台上使用 Hadoop 可降低分配資源進行實驗和開發所需的成本和時間,大幅提升組織靈活性。

Hadoop 組態、聯網、伺服器安裝、安全組態及進行中的管理維護是相當複雜且有挑戰性的活動。Amazon EMR 是一個可解決 Hadoop 基礎設施要求的受管服務,讓您專注於核心業務。

Hadoop 環境可以輕鬆地與其他服務整合,例如,Amazon S3Amazon KinesisAmazon RedshiftAmazon DynamoDB,之後即可在 AWS 平台上的許多不同服務間移動資料、建立工作流程及進行分析。此外,您可以使用 AWS Glue Data Catalog 當做 Apache Hive 和 Apache Spark 的受管中繼資料儲存庫。

許多 Hadoop 任務都具有流量突增的特性。舉例來說,ETL 任務可能每小時、每天或每月執行,而金融公司或基因定序的模型建立任務可能一年只需發生幾次。在 Amazon EMR 上使用 Hadoop 可讓您輕鬆地運轉這些工作負載叢集、儲存結果,並於不再需要 Hadoop 資源時關閉,以避免不必要的基礎設施費用。 EMR 6.x 支援 Hadoop 3,可讓 YARN NodeManager 直接在 EMR 叢集主機或 Docker 容器內部啟動容器。若要進一步了解,請參閱我們的文件。

在 Amazon EMR 上使用 Hadoop 之後,您即具有在任何 AWS 區域中任意數量的可用區域中啟動叢集的彈性。一個區域 (Region) 或區域 (Zone) 中的潛在問題或威脅,只要在最短時間內啟動另一個區域 (Zone) 中的叢集即可輕鬆避免。

部署 Hadoop 環境前先規劃容量,通常會導致昂貴的閒置資源或資源限制。使用 Amazon EMR,您可以在幾分鐘內建立具有所需容量的叢集,並使用 EMR 受管擴展動態擴展和縮減節點。

Hadoop 與大數據之間的關係為何?

Hadoop 可大規模擴展,所以常用來處理大數據工作負載。若要增加 Hadoop 叢集的處理能力,可新增更多具有所需 CPU 和記憶體資源的伺服器來滿足您的需求。

Hadoop 提供高等級的耐久性和可用性,同時仍然能夠平行處理運算分析工作負載。處理結合了可用性、耐久性和可擴展性,讓 Hadoop 非常適合用於大數據工作負載。您可以使用 Amazon EMR 在短時間內建立和設定執行 Hadoop 的 Amazon EC2 執行個體叢集,然後開始從您的資料衍生值。

使用案例

Apache 與 Hadoop 是 Apache Software Foundation 的商標。

Hadoop 可用於分析點擊流資料,以便細分使用者並了解使用者的各種偏好。廣告商還可以分析點擊流和廣告的展示次數日誌,以提供更有效率的廣告。

了解 Razorfish 如何在 Amazon EMR 上使用 Hadoop 進行點擊流分析

Hadoop 可用於處理 Web 和行動應用程式產生的各種日誌。Hadoop 能協助您將數 PB 的非結構化或者半結構化資料轉變為有用的應用程式或使用者見解。

了解 Yelp 如何使用 Amazon EMR 上的 Hadoop 提升主要網站功能

 

Hadoop 生態系統應用程式 (如 Hive) 允許使用者使用 SQL 界面來利用 Hadoop MapReduce,執行大規模、分散式及容錯資料倉儲的分析。使用 Hadoop 存放您的資料,並允許使用者傳送任何大小的資料查詢。

觀賞 Netflix 如何在 Amazon EMR 上使用 Hadoop 執行 PB 級資料倉儲

Hadoop 可快速且有效地處理大量的基因體資料及其他大型科學資料集。AWS 已將 1000 個基因體專案的資料免費公開提供給社群使用。

閱讀更多有關 AWS 上基因體的資訊

 

由於 Hadoop 具備大規模可擴展性和較為低廉的成本,使其非常適合用於常見的 ETL 工作負載,例如收集、排序、加入和彙總大型資料集,便於下游系統使用。

閱讀 Euclid 如何在 Amazon EMR 上將 Hadoop 用於 ETL 和資料彙總