MapReduce編程模型
MR基礎
最大優點是充分利用了閒置資源,多任務並行,快速得到答案。
拆分-處理-合併
MR框架介紹
MR處理流程
MapReduce(最早由Google提出)是一種分佈式數據處理模型;核心過程主要分成2個階段:Map階段和Reduce階段;首先執行Map階段,再執行Reduce階段。Map和Reduce階段的處理邏輯由用戶自定義實現,即實現分佈式計算。
MR模型的適用場景
搜索:網頁爬取、倒排索引,PageRank
Web訪問日誌分析:分析和挖掘用戶在web上的訪問、購物行爲特徵,實現個性化推薦;分析用戶訪問行爲。
文本統計分析:例如小說的WordCount,詞頻TFIDF分析;學術論文、專利文獻的飲用分析和統計;維基百科數據分析等。
海量數據挖掘:非結構數據、時空數據、圖像數據的挖掘。
機器學習:監督學習、無監督學習、分類算法如決策樹、SVM等。
自然語言處理:基於大數據的訓練和預測;基於語料庫構建單詞同現矩陣,頻繁項數據挖掘、重複文檔檢測等。
廣告推薦:用戶點擊(CTR)和購買行爲(CVR)預測
MR框架
用戶視角看原理
用戶視角談實現
擴展MR
MR開發使用流程
1、阿里雲官網下載插件、配置開發環境
2、新建java項目,完成MR開發
增加mapper
增加Reducer
增加MR Driver
添加處理邏輯
3、本地測試
準備本地測試數據
本地測試
本地測試結果檢查
4、導出成jar包,並作爲資源上傳到ODPS的項目空間
add jar wcMR.jar -f;
MR打包成jar包
5、使用jar命令調用MR(命令示例如下)
jar -resources wcMR.jar -classpath wcMR.jar -classpath wcMR.jar example.wcDriver wc_in wc_out;
6、檢查運行結果
7、開發發佈完成。
發佈
例子:WordCount
MR的開發說明:
1、支持MaxCompute內置類型的bigint,double,string,datetime及Boolean類型,不支持自定義類型。
2、接受多表輸入,且輸入表的schema可以不同。在map函數中,可以獲取當前record對應的table信息。
3、輸入可以爲空,不支持視圖(View)作爲輸入。
4、Reduce接受多路輸出,可以輸出到不同表,或者同一張表的不同分區。不同輸出的schema可以不同。不同輸出間通過label進行區分,默認輸出不必加lable,目前不接受沒有輸出的情況。
MR編程模型-SDK核心接口
MaxCompute MR執行流程
核心接口
MapperBase:映射操作
JobConf:MR任務配置信息
MR使用注意事項
Graph編程模型
Graph概述
Graph的數據結構
Graph的處理流程
Graph的處理僞代碼
Graph SDK介紹
Graph的Aggregator機制
Graph的作業運行
Graph開發使用流程
Dijkstra算法
配置java—+eclapse等跟mapreduce步驟都類似
JAVA沙箱限制