MapReduce程式執行過程

2021-09-24 10:56:40 字數 1333 閱讀 2936

input:讀取程式輸入

預設:讀hdfs上檔案,將檔案拆分為分片split

500m -->4個block --> 4個split --> 將每個split中的每一行轉換為乙個keyvalue

key:行的偏移量

value:行的內容

map:將任務進行拆分嗎,啟動多個map task 來處理每個分片

預設:乙個分片對應乙個map task(執行緒)

每個maptask中的每一條去呼叫一次map方法

map方法:

1:對資料進行處理:

-->對資料進行過濾,合法性判斷

-->對資料進行格式化

dd/mm/yyyy:hh:mm:ss ->yyyy-mm-dd hh:mm:ss

-->資料字段補全

2:封裝新的key value進行輸出

shuffle:將map輸出結果按照key進行分組,相同的key的value進行合併

-->對資料進行操作:

分割槽,排序,分組

key,

reduce:將任務的結果進行合併,啟動reduce task 對shuffle輸出的每條資料進行處理,每一種keyvalue呼叫一次

reduce方法

reduce方法:

1:對每種key的資料進行處理

eg:求和統計類的操作

2:封裝結果的keyvakle

output:將整個程式的結果進行輸出,預設輸出到hdfs變為檔案

input輸出:

<0,hbase hive hadoop>

<20,spark hadoop>

<40,hadoop hive>

<60,spark hbase>

<80,spark hadoop>

map輸出:

hbase 1

hive 1

hadoop 1

spark 1

hadoop 1

hadoop 1

hive 1

spark 1

hbase 1

spark 1

hadoop 1

shullef輸出:

hbase

hive

hadoop

spark

reduce輸出:

hbase 2

hive 2

hadoop 4

spark 3

output輸出:

hbase 2

hive 2

hadoop 4

spark 3

MapReduce程式執行模式

1 mapreduce程式是被提交給localjobrunner在本地以單程序的形式執行 2 而處理的資料及輸出結果可以在本地檔案系統,也可以在hdfs上 3 怎樣實現本地執行?寫乙個程式,不要帶集群的配置檔案 本質是程式的conf中是否有mapreduce.framework.name local...

Hadoop的MapReduce執行過程

執行mapreduce的命令 hadoop jarmr執行流程 客戶端提交乙個mr的jar包給jobclient 提交方式 hadoop jar 也就是執行jar裡面的main方法 jobclient通過rpc和jobtracker rm 進行通訊,返回乙個存放jar包的位址 hdfs 和jobid...

MapReduce執行過程詳解(重點)

任務的處理過程又可以分為以下幾個階段,如圖所示 2.對輸入片中的記錄按照一定規律解析成鍵值對。健是每個行的起始位置,值是本行的文字內容 3.上階段解析出來的每乙個鍵值對,呼叫一次map 方法輸出新的鍵值對 4.按照規則對第三階段輸出的鍵值對進行分割槽 5.對每個分割槽的鍵值進行排序,然後直接輸出到本...