本文為您介紹MaxCompute支援的MapReduce編程介面及使用限制。
MaxCompute提供個兩版本的MapReduce編程介面:
- MaxCompute MapReduce:MaxCompute的原生介面,執行速度快、開發快捷、不暴露檔案系統。
- MaxCompute擴充MapReduce(MR2):對MaxCompute MapReduce的擴充,支援更複雜的作業調度邏輯。MapReduce的實現方式與MaxCompute原生介面一致。
說明 您無法通過MapReduce讀寫外部表格中的資料。
應用情境
MapReduce支援下列情境:
- 搜尋:網頁爬取、倒排索引、PageRank。
- Web訪問日誌分析:
- 分析和挖掘使用者在Web上的訪問、購物行為特徵,實現個人化推薦。
- 分析使用者訪問行為。
- 文本統計分析:
- 熱門小說的字數統計(WordCount)、詞頻TFIDF分析。
- 學術論文、專利文獻的引用分析和統計。
- 維基百科資料分析。
- 海量資料採礦:非結構化資料、時空資料和映像資料採礦。
- 機器學習:監督學習、無監督學習和分類演算法(例如決策樹、SVM)。
- 自然語言處理:
- 基於巨量資料的訓練和預測。
- 基於語料庫構建單詞同現矩陣,頻繁項集資料採礦、重複項檢測等。
- 廣告推薦:使用者單擊(CTR)和購買行為(CVR)預測。
MapReduce流程說明
MapReduce處理資料過程主要分成Map和Reduce兩個階段。首先執行Map階段,再執行Reduce階段。Map和Reduce的處理邏輯由使用者自訂實現,但要符合MapReduce架構的約定。MapReduce處理資料的完整流程如下:
- 輸入資料:對文本進行分區,將每片內的資料作為單個Map Worker的輸入。分區完畢後,多個Map Worker便可以同時工作。
在正式執行Map前,需要將輸入資料進行分區。所謂分區,就是將輸入資料切分為大小相等的資料區塊,每一塊作為單個Map Worker的輸入被處理,以便於多個Map Worker同時工作。
- Map階段:每個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架構協議不同,在MaxCompute中,Combiner的輸入、輸出的參數必須與Reduce保持一致,這部分的處理通常也叫做洗牌(Shuffle)。
- Reduce階段:進入Reduce階段,相同Key的資料會傳送至同一個Reduce Worker。同一個Reduce Worker會接收來自多個Map Worker的資料。每個Reduce Worker會對Key相同的多個資料進行Reduce操作。最後,一個Key的多條資料經過Reduce的作用後,將變成一個值。
- 輸出結果資料。
說明 上文僅是對MapReduce架構的簡單介紹,更多詳情請查閱功能介紹。
下文將以WordCount為例,為您介紹MaxCompute MapReduce各個階段的概念。
假設存在一個文本a.txt,文本內每行是一個數字,您要統計每個數字出現的次數。文本內的數字稱為Word,數字出現的次數稱為Count。如果MaxCompute MapReduce完成這一功能,需要經歷以下流程,圖示如下。
操作步驟- 輸入資料:對文本進行分區,將每片內的資料作為單個Map Worker的輸入。
- Map階段:Map處理輸入,每擷取一個數字,將數位Count設定為1,並將此<Word, Count>對輸出,此時以Word作為輸出資料的Key。
- Shuffle>合并排序:在Shuffle階段前期,首先對每個Map Worker的輸出,按照Key值(即Word值)進行排序。排序後進行Combiner操作,即將Key值(Word值)相同的Count累加,構成一個新的<Word, Count>對。此過程被稱為合并排序。
- Shuffle>分配Reduce:在Shuffle階段後期,資料被發送到Reduce端。Reduce Worker收到資料後依賴Key值再次對資料排序。
- Reduce階段:每個Reduce Worker對資料進行處理時,採用與Combiner相同的邏輯,將Key值(Word值)相同的Count累加,得到輸出結果。
- 輸出結果資料。
說明 由於MaxCompute的所有資料都被存放在表中,因此MaxCompute MapReduce的輸入、輸出只能是表,不允許您自訂輸出格式,不提供類似檔案系統的介面。
使用限制
- MapReduce使用限制請參見使用限制匯總。
- 有關本地啟動並執行MapReduce使用限制,請參見本地運行和分布式環境運行差異。