mapreduce的執行過程
阿新 • • 發佈:2017-08-18
hash 寫入 fileinput 集群 reduce tin combine utf keyvalue
1.首先是map獲取分片,分片的大小和分片規則取決於文件輸入的格式,FileInputFormat是輸入格式的一個基類,FileInputFormat下有幾個重要的子類,分別是TextInputFormat,KeyValueTextInputFormat,NLineInputFormat等等,使用什麽輸入格式決定分片的分片大小和規則,以及map的處理方式。map處理完後有必要就進行分區,分區是為了在不同的reduce處理數據,有負載均衡的作用,使用幾個reduce取決於Hadoop集群的性能。默認的分區方式是對key的hash值與reduce個數進行取模,reduce默認數為1個,分區之後就是分組,默認的分組也是根據key進行分組,當需要在分區的基礎上繼續進行細分的話,就可以使用分組,同一個分組的數據同時進入一個reduce,分組之後就是排序,排序是在分組的組裏進行排序的,默認的排序規則也是根據key進行排序的。之後就是combiner,combiner必須在所有map執行完才能執行,Combiner作用是合並相同的key對應的value,combiner的作用1是減少map寫入到磁盤的文件大小(磁盤io),作用2是減少reduce和map節點之間的io輸出量(網絡io)。combiner一般是直接使用reduce的方法。
reduce階段:reduce會根據分區去相應的節點復制數據,在進行排序之後進入reduce進行處理,之後數據輸出。
mapreduce的執行過程