最近準備要開始準備CCAH與CCDH的證照考試(目標2013年3月底以前,因為還要忙公司的事情,而且還有HBase要看!~公司至上^_^~),所以我將要重新再吃一次Hadoop definitive guide edition2中文版,我也會把練習的心得分享給大家^^~,再這邊的例子都是基於非初學者喔...因為跟著書的章節走,初學者一定會GG。建議是需要先懂HDFS的操作,才有辦法玩下去!!
@ 當然練習一定要有pattern囉,大家可以到 http://www.hadoopbook.com下載氣象資料(我看了一下好像只有兩年而已QQ")。
第二章開始 : MapReduce
- 2.1 說明如何氣象資料的型態,當然練習就是需要pattern拉^^~,請至 http://www.hadoopbook.com下載
- 2.2 使用Unix/Linux來分析,這邊只是在鋪陳Hadoop的好處!!
- 2.3 使用Hadoop來分析資料,這邊就是有用到MapReduce來做資料的分析(每年的最高溫度),大致上的重點就是
- a. 資料的format,因為需要parse每一筆資料,並在map程序中抽取需要的欄位。
- b. 利用shuffle把相同的年分的氣溫湊在一起,再利用reduce做最大溫度的抽取。
- c. 注意新舊版本中mapreduce程式碼的差異。
- 2.4 主要是要說明簡易版的MapReduce的資料流(Data flow)。
- 2.4.1 這裡有一個重點,mapReduce迷人的地方在於"在地運算",這是甚麼意思呢,可以想像一筆資料5G,跟一個程式(.jar)50MB,移動誰會比較容易?不用說也知道是要移動程式碼囉,那麼在執行mapreduce時,叢集中的slave要如何拿到程式(.jar)如下圖所示透過step 8來取得。
本圖為hadoop definitive guide edtion2中擷取出來的。
- 2.4.2 在介紹combiner函數前,上一小節有提到mapreduce的執行過程 :
Data input -> input split -> map -> sort -> shuffle -> copy -> reduce -> Data output,
而combiner會在shuffle之前進行,所以會變成
Data input -> input split -> map -> sort -> shuffle -> combiner -> copy -> reduce -> Data output。
combiner的好處可以降低map與reduce之間的傳輸資料量,當然也會加速運作的時間囉^.^~。
- 2.5 Hadoop streaming : 利用Ruby與Python做練習。
- 2.6 Hadoop pipes : 利用C++做練習。
2.5與2.6大致上是要說明mapreduce並非只有java可以執行,我在念研究所的時候就是利用Hadoop pipes做mapreduce的job,那時候的project是世界名例wordcount是也,那時候對我來說好難喔,但是後來開發都是專注於java,久而久之就快忘掉了~呵呵~有興趣的朋友們口以試試唷^.^~