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.對每個分割槽的鍵值進行排序,然後直接輸出到本...