hadoop起步之mapReduce

1、map function, input : pairs, output : pairs

氣象局的example,最終目的是計算出每年的最高溫度。

input:

(0, 0067011990999991950051507004...9999999N9+00001+99999999999...)
(106, 0043011990999991950051512004...9999999N9+00221+99999999999...)

大體結構就是溫度記錄數據的文件偏移和行數據,map處理的是把年份和溫度整理出來

output:

(1950, 0)
(1950, 22)
(1950, −11)
(1949, 111)
(1949, 78)


2、在將數據傳遞給reduce之前,需要經過一個mapReduce框架的處理,它會以key爲單元將數據進行分組

output:

(1949, [111, 78])
(1950, [0, 22, −11])


3、數據發送給reduce function, input pairs, output:pairs

output:

(1949, 111)
(1950, 22)


角色分類:

1、hadoop會將input數據劃分爲split,也就是一塊一塊的數據,一般大小不能超過64MB,因爲超過了,意味着這塊數據無法在HDFS系統中存儲在同一塊BLOCK上

2、task有兩類:map task和reduce task

3、每個split會被分配到一個map task,hadoop的分配原則是:優先考慮數據在某節點的HDFS上並且map task也在該節點上的情況,然後考慮的是在同一rack但不同節點的情況;最後考慮跨rack的節點情況;

4、管理類有兩種:jobtracker和tasktracker,jobtracker負責分配task,並跟蹤task處理情況;tasktracker負責處理task,並彙報task處理情況


關於map和reduce的輸出:

1、map的輸出是記錄在本地磁盤的,而不是hdfs系統,因爲這些output在reduce處理後即可刪除,無需保留

2、map的輸出是需要給reduce的,所以這裏會涉及到數據在網絡間的傳輸消耗

3、reduce的輸出會進入hdfs系統,作爲可靠數據存儲


關於combiner環節

1、它是一個處理環節,處於map之後,可以在reduce之前進行一些不會影響reduce結果的數據預處理,例如數據篩選,目的就是減少map和reduce間的數據傳輸量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章