日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > MapReduce 編程 系列五 MapReduce 主要過程梳理

MapReduce 編程 系列五 MapReduce 主要過程梳理

來源:程序員人生   發布時間:2014-10-12 12:05:15 閱讀次數:2465次

前面4篇文章介紹了如何編寫一個簡單的日志提取程序,讀取HDFS share/logs目錄下的所有csv日志文件,然后提取數據后,最終輸出到share/output目錄下。

本篇停留一下,梳理一下主要過程,然后提出新的改進目標。

首先聲明一下,所有的代碼都是maven工程的,沒有使用任何IDE。  這是我一貫的編程風格,用Emacs + JDEE開發。需要使用IDE的只需要學習如何在IDE中使用maven即可。


可比較的序列化

第一個是序列化,這是各種編程技術中常用的。MapReduce的特別之處在于由于key用來排序,所有它既要支持序列化和反序列化,同時也要支持比較大小的操作。因此通常使用的都是接口WritableComparable<T>,這個接口分別從Writable接口和java.lang.Comparable<T>接口繼承。前者負責序列化,實現的就是類似流(stream)的功能,后者負責比較。


MapReduce計算流程

這里只是概括的介紹主要步驟:

1. 通過InputFormat讀取HDFS目錄的日志文件的所有行,進行內容分塊。然后每個塊都會對應一個mapper

2. 調用每個Mapper的map函數, 將內容塊的數據按照行變成<key, value>格式,作為參數傳遞. map函數的代碼由程序員自己實現,通常key是數據,value是整數,便于做統計。這樣,也就將參數<key, value>改成了另一種符合業務邏輯的<key, value>, 通過Context.write方法

寫出去,隨后會被框架交給Reducer.

3. Partitioner目前我的程序中沒有實現自己的類,只是簡單使用了Reducer,后面會增加這部分的說明

4. 框架會根據key進行分組,組成<key, values>對, 調用Reducer的reduce函數,函數接受到Mapper傳遞來的<key, values>后再做統計

5. 輸出成什么樣的格式文件由OutputFormat來控制。


注意上面的幾個粗體字,就是5大MapReduce組件。每個組件都是我們可以繼承的類,然后MapReduce框架通過多態的方式來回調我們的子類實現的方法。


MapReduce Job的配置

有了上面的實現,還需要配置Job,并且在hadoop命令行中提交。

配置的話,直接new一個Job類,調用set方法進行相應的設置即可。 Job的父類是JobContext。

就在這里可以設置上面的5大組件類,用自己的類來替換。還可以設置Reducer的數量。


分析就到這里,后面會陸續進行更多的編程實踐。

比如,定制自己的3大組件, InputFormat,Partitioner和OutputFormat。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久av在线 | 欧美黄色片在线观看 | 天堂中文字幕 | 爱情岛论坛首页网址 | 亚洲狼人| 日韩精品免费一区二区在线观看 | 亚洲一区二区视频在线 | 麻豆一区二区 | 久久久久久国产精品免费 | 性欧美三级 | 国产一区二区三区的电影 | 欧美一区二区三区久久 | 99精品欧美一区二区蜜桃免费 | 欧美日韩精品久久久久 | 久久久国产亚洲精品 | 久久国产日韩 | 国产精品2 | www.黄色在线观看 | 亚洲精品一区二区三区在线 | 日韩精品视频一区二区三区 | 久久中出| 欧美激情xxxx | 国产全黄a一级毛片91 | 少妇性色午夜淫片aaa播放 | 九九在线精品视频 | 亚洲成人精品一区二区 | 91精品国产综合久久久久久久久 | 成人高清在线 | 999精品视频 | 久久国产精品久久 | 天天爱综合 | 狠狠综合| 成年免费视频 | 日本77777| 国产一区二区高清 | 国产一区二区三区视频播放 | 亚洲综合精品 | 麻豆视频一区 | 欧美九九九 | 亚洲在线中文字幕 | 日韩国产 |