閱讀789 返回首頁    go 微軟 go windows


MapReduce__概要__大數據計算服務-阿裏雲

MaxCompute提供了三個版本的MapReduce編程接口,包括:

  • MaxCompute MapReduce:MaxCompute的原生接口,執行速度更快。開發更便捷,不暴露文件係統。
  • MR2(擴展MapReduce):對MaxCompute MapReduce的擴展,支持更複雜的作業調度邏輯。Map/Reduce的實現方式與MaxCompute原生接口一致。
  • 以及Hadoop兼容版本:高度兼容Hadoop MapReduce ,與MaxCompute原生MapReduce,MR2不兼容。

三個版本的在基本概念作業提交, 輸入輸出資源使用等方麵基本一致,不同的是Java SDK彼此各異。本小節隻會對MapReduce的基本原理做簡單介紹,更多原理介紹可參考Hadoop MapReduce 教程

備注:

  • 目前MapReduce功能仍處於免費公測中。MaxCompute 2.0版本提供的兼容Hadoop 版本已經上線。
  • 用戶還不能夠通過MapReduce讀寫OSS中的數據。

應用場景

MapReduce最早是由Google提出的分布式數據處理模型,隨後受到了業內的廣泛關注,並被大量應用到各種商業場景中。比如:

  • 搜索:網頁爬取、倒排索引、PageRank。
  • Web訪問日誌分析:分析和挖掘用戶在web上的訪問、購物行為特征,實現個性化推薦;分析用戶訪問行為。
  • 文本統計分析:比如莫言小說的WordCount、詞頻TFIDF分析;學術論文、專利文獻的引用分析和統計;維基百科數據分析等。
  • 海量數據挖掘:非結構化數據、時空數據、圖像數據的挖掘。
  • 機器學習:監督學習、無監督學習、分類算法如決策樹、SVM等。
  • 自然語言處理:基於大數據的訓練和預測;基於語料庫構建單詞同現矩陣,頻繁項集數據挖掘、重複文檔檢測等。
  • 廣告推薦:用戶點擊(CTR)和購買行為(CVR)預測。

處理流程

MapReduce處理數據過程主要分成2個階段:Map階段和Reduce階段。首先執行Map階段,再執行Reduce階段。Map和Reduce的處理邏輯由用戶自定義實現,但要符合MapReduce框架的約定。

  • 在正式執行Map前,需要將輸入數據進行”分片”。所謂分片,就是將輸入數據切分為大小相等的數據塊,每一塊作為單個Map Worker的輸入被處理,以便於多個Map Worker同時工作。
  • 分片完畢後,多個Map Worker就可以同時工作了。每個Map Worker在讀入各自的數據後,進行計算處理,最終輸出給Reduce。Map Worker在輸出數據時,需要為每一條輸出數據指定一個Key。這個Key值決定了這條數據將會被發送給哪一個Reduce Worker。Key值和Reduce Worker是多對一的關係,具有相同Key的數據會被發送給同一個Reduce Worker,單個Reduce Worker有可能會接收到多個Key值的數據。
  • 在進入Reduce階段之前,MapReduce框架會對數據按照Key值排序,使得具有相同Key的數據彼此相鄰。如果用戶指定了”合並操作”(Combiner),框架會調用Combiner,將具有相同Key的數據進行聚合。Combiner的邏輯可以由用戶自定義實現。與經典的MapReduce框架協議不同,在ODPS中,Combiner的輸入、輸出的參數必須與Reduce保持一致。這部分的處理通常也叫做”洗牌”(Shuffle)。
  • 接下來進入Reduce階段。相同的Key的數據會到達同一個Reduce Worker。同一個Reduce Worker會接收來自多個Map Worker的數據。每個Reduce Worker會對Key相同的多個數據進行Reduce操作。最後,一個Key的多條數據經過Reduce的作用後,將變成了一個值。

備注:

  • 上文僅是對MapReduce框架做簡單介紹,更多相關信息請查閱其他資料。

下麵將以WordCount為例,解釋ODPS MapReduce各個階段的概念。 假設存在一個文本a.txt,文本內每行是一個數字,我們要統計每個數字出現的次數。文本內的數字稱為Word,數字出現的次數稱為Count。如果ODPS Mapreduce完成這一功能,需要經曆下圖描述的幾個步驟:

首先對文本進行分片,將每片內的數據作為單個Map Worker的輸入;

  • Map處理輸入,每獲取一個數字,將數字的Count設置為1,並將此<Word, Count>對輸出,此時以Word作為輸出數據的Key;
  • 在Shuffle階段前期,首先對每個Map Worker的輸出,按照Key值,即Word值排序。排序後進行Combine操作,即將Key值(Word值)相同的Count累加,構成一個新的<Word, Count>對。此過程被稱為合並排序;
  • 在Shuffle階段後期,數據被發送到Reduce端。Reduce Worker收到數據後依賴Key值再次對數據排序;
  • 每個Reduce Worker對數據進行處理時,采用與Combiner相同的邏輯,將Key值(Word值)相同的Count累加,得到輸出結果;

備注:

  • 由於 MaxCompute 的所有數據都被存放在表中,因此MaxCompute MapReduce的輸入、輸出隻能是表,不允許用戶自定義輸出格式,不提供類似文件係統的接口。

最後更新:2016-10-18 11:46:39

  上一篇:go 保留字__附錄_SQL_大數據計算服務-阿裏雲
  下一篇:go 擴展MapReduce__概要_MapReduce_大數據計算服務-阿裏雲