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