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
上一篇:
保留字__附錄_SQL_大數據計算服務-阿裏雲
下一篇:
擴展MapReduce__概要_MapReduce_大數據計算服務-阿裏雲
企業郵箱 Windows Live Mail 的 POP3/IMAP 協議設置方法__客戶端使用_郵箱常見問題_企業郵箱-阿裏雲
刪除授權__資源授權接口_Open API_消息隊列 MQ-阿裏雲
惡意代碼掃描接口__惡意代碼掃描API_API手冊_移動安全-阿裏雲
PasswordPolicy__數據類型_RAM API文檔_訪問控製-阿裏雲
續費實例__實例相關接口_API 參考_雲服務器 ECS-阿裏雲
刪除專有網絡__專有網絡相關接口_API 參考_雲服務器 ECS-阿裏雲
創建定時任務__API快速入門_快速入門_彈性伸縮-阿裏雲
資源訪問控製__授權管理_用戶指南_訪問控製-阿裏雲
查詢實例規格族列表__其他接口_API 參考_雲服務器 ECS-阿裏雲
雲服務器 ECS 可用區
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲