阿里雲 Elastic MapReduce(E-MapReduce)是運行在阿里雲平台上的一種大資料處理的系統解決方案。E-MapReduce 構建於阿里雲Elastic Compute Service 上,基於開源的 Apache Hadoop 和 Apache Spark,讓使用者可以方便地使用Hadoop和Spark生態系統中的其他周邊系統(如 Apache Hive、Apache Pig、HBase 等)來分析和處理自己的資料。不僅如此,使用者還可以通過E-MapReduce將資料非常方便的匯出和匯入到阿里雲其他的雲資料存放區系統和資料庫系統中,如阿里雲 OSS、阿里雲 RDS 等。

E-MapReduce 的用途

當使用者想要使用 Hadoop、Spark 等分散式處理系統的時候,通常需要經曆如下的步驟:

  1. 評估業務特點
  2. 選擇機器類型
  3. 採購機器
  4. 準備硬體環境
  5. 安裝作業系統
  6. 部署 Hadoop 和 Spark 等 app
  7. 啟動叢集
  8. 編寫應用程式
  9. 運行作業
  10. 擷取資料等一系列操作

在這些流程中,真正跟使用者的應用邏輯相關的是從第8步才開始,第1-7步的各項工作都是前期的準備工作,通常這個前期工作都非常冗長繁瑣。而 E-MapReduce 提供了叢集管理工具的整合解決方案,如主機選型、環境部署、叢集搭建、叢集配置、叢集運行、作業配置、作業運行、叢集管理、效能監控等。

通過使用 E-MapReduce,使用者可以從叢集構建各種繁瑣的採購、準備、營運等工作中解放出來,只關心自己應用程式的處理邏輯即可。此外,E-MapReduce 還給使用者提供了靈活的搭配組合方式,使用者可以根據自己的業務特點選擇不同的叢集服務。例如,如果使用者的需求是對資料進行日常統計和簡單的批量運算,則可以只選擇在 E-MapReduce 中運行 Hadoop 服務;而如果使用者還需要流式計算和即時計算的需求,則可以在 Hadoop 服務基礎上再加入 Spark 服務。

E-MapReduce 的組成

E-MapReduce 最核心也是使用者直接面對的組件是叢集。一個 E-MapReduce 叢集是由一個或多個阿里雲 ECS instance 組成的 Hadoop 和 Spark 叢集。以 Hadoop 為例,在每一個 ECS instance 上,通常都運行了一些 daemon 進程(如 namenode、datanode、resoucemanager 和 nodemanager),這些 daemon 進程就組成了 Hadoop 叢集。運行 namenode 和 resourcemanager 的節點被稱為 master 節點,而運行 datanode 和 nodemanager 的節點被稱為 slave 節點。

例如,下圖表示了一個包含1個 master 節點和3個 slave 節點的 E-MapReduce 叢集: