本文介紹使用E-MapReduce產品從OSS服務上讀取資料 ,並進行資料擷取、清洗等一系列離線資料處理的使用情境。

前言

E-MapReduce 叢集適用情境很多。簡單說來,Hadoop ecosystem 以及 Spark 能夠支援的情境,E-MapReduce 都可以支援。因為 E-MapReduce 本質就是 Hadoop 和 Spark 的叢集服務,您完全可以將EMR叢集使用的阿里雲 ECS 主機視為自己專屬的物理主機。

大資料處理目前比較流行的有兩種方法,一種是離線處理,一種是線上處理。
  • 離線處理:只是希望得到資料的分析結果,對處理的時間要求不嚴格,例如批量資料處理,使用者將資料轉送到OSS服務,OSS服務作為EMR產品的輸入輸出,利用MapReduce,Hive,Pig,Spark處理離線資料。
  • 線上處理:對於資料的分析結果在時間上有比較嚴格的要求,例如即時資料流式資料處理,使用Spark Streaming對訊息資料進行處理,與Spark mllib/GrapX/SQL深度整合。

本文將介紹使用E-MapReduce產品運行一個"word count"離線作業。

基本架構

OSS -> EMR -> Hadoop MapReduce

上述鏈路主要包含2個過程:
  1. 把資料存放區到OSS服務裡。
  2. 通過EMR服務將OSS中的資料讀取出來,進行分析。

環境準備

  • 本文以Windows環境為例,請確保Git,Maven, Java已經安裝並配置成功。
  • 本文使用阿里雲EMR服務自動化搭建Hadoop叢集,詳細過程請參考建立叢集
    • EMR版本: EMR-3.12.1
    • 叢集類型: HADOOP
    • 軟體資訊: HDFS2.7.2 / YARN2.7.2 / Hive2.3.3 / Ganglia3.7.2 / Spark2.3.1 / HUE4.1.0 / Zeppelin0.8.0 / Tez0.9.1 / Sqoop1.4.7 / Pig0.14.0 / ApacheDS2.0.0 / Knox0.13.0
    • Hadoop叢集使用專用網路,地區為華東1(杭州),主執行個體組ECS計算資源配置公網及內網IP,高可用選擇為否(非HA模式),具體配置如下所示。

操作步驟

  1. 下載範例程式碼到本地
    在本地開啟git bash運行clone命令:
    git clone https://github.com/aliyun/aliyun-emapreduce-demo.git

    執行mvn install進行編譯。

  2. 建立儲存空間,詳細過程請參考建立儲存空間
    说明 Bucket應與E-MapReduce叢集在同一個地區。
  3. 上傳jar包和資源檔
    1. 登入OSS 管理主控台,單擊檔案管理
    2. 單擊上傳檔案,上傳aliyun-emapreduce-demo/resources目錄下的資源檔以及aliyun-emapreduce-demo/target目錄下的jar檔案。
  4. 建立工作流程項目

    詳細過程請參考工作流程專案管理

  5. 建立作業

    詳細過程請參考作業編輯,這裡我們以MapReduce為例。

  6. 配置作業內容,點擊運行。如圖所示:
    说明
    • OSS輸出路徑如果已經存在,在執行作業時會報錯。
    • 插入OSS路徑時,如果選擇OSSREF檔案首碼,系統會把OSS檔案下載到叢集本地,並添加到classpath中。
    • 當前所有操作都只支援標準儲存類型的OSS。 

查看日誌

關於查看執行計畫日誌的詳細步驟,請參考SSH 登入叢集