MapReduce编程概述
? ? MapReduce是一個用于大規(guī)模數(shù)據(jù)集的并行處理的分布式計算的編程框架。MapReduce將一個數(shù)據(jù)處理過程拆分為Map和Reduce兩部分:Map是映射,負(fù)責(zé)數(shù)據(jù)的過濾分發(fā);Reduce是規(guī)約,負(fù)責(zé)數(shù)據(jù)的計算歸并。開發(fā)人員只需通過編寫map和reduce函數(shù),不需要考慮分布式計算框架的運行機制,即可在Hadoop集群上實現(xiàn)分布式運算。MapReduce可以幫助開發(fā)人員將精力集中在業(yè)務(wù)邏輯的開發(fā)上,分布式計算的復(fù)雜性交由框架來處理。MapReduce把對數(shù)據(jù)集的大規(guī)模操作分發(fā)到計算節(jié)點,計算節(jié)點會周期性地返回其工作的最新狀態(tài)和結(jié)果。如果結(jié)點保持沉默超過一個預(yù)設(shè)時間,主節(jié)點則將該節(jié)點標(biāo)記為死亡狀態(tài),并把已分配該節(jié)點數(shù)據(jù)發(fā)送到其他結(jié)點重新計算,從而實現(xiàn)數(shù)據(jù)處理任務(wù)的自動調(diào)度。
? ? Hadoop支持多種語言進行MapReduce編程,包括Java、Ruby、Python和C++等。在Hadoop平臺上運行MapReduce程序,主要人物是將HDFS存儲的大文件數(shù)據(jù)分發(fā)給多個計算節(jié)點上的Map程序進行處理,然后再由計算節(jié)點上的Reduce程序合并或進一步處理多個節(jié)點上的計算機結(jié)果。步驟如下:
? ? (1)編寫Hadoop中org.apache.hadoop.mapreduce.Mapper類的子類,并實現(xiàn)map方法;
? ? (2)編寫Hadoop中org.apache.hadoop.mapreduce.Reducer類的子類,并實現(xiàn)reduce方法;
? ? (3)編寫main程序,設(shè)置MapReduce程序的配置,并指定任務(wù)的Map程序類(第一步的Java類),Reduce程序類等(第二步的Java類),指定輸入/輸出文件及格式,提交任務(wù)等;
? ? (4)將(1)~(3)的類文件與Hadoop自帶的包打包為jar文件,并分發(fā)到Hadoop集群的任意節(jié)點。
? ? (5)運行main程序,任務(wù)自動在Hadoop集群上運行;
? ? (6)到指定文件夾查看計算結(jié)果;
? ? Map程序和Reduce程序的輸入/輸出都是以Key-Value對的形式出現(xiàn)的,定義map函數(shù)的輸出和reduce函數(shù)的輸入的Key-Value的格式必須一致,MapReduce的調(diào)度程序完成Map和Reduce間的數(shù)據(jù)傳遞。
?
總結(jié)
以上是生活随笔為你收集整理的MapReduce编程概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汉字编码方案介绍
- 下一篇: 基于stc89c52电子钟综合设计