Hadoop:MapReduce概述、WordCount

MapReduce概述

MapReduce是Hadoop的两大核心技术之一,HDFS解决了大数据存取问题,而MapReduce是对大数据的高效并行编程模型。

MapReduce任务分为两个阶段:map与reduce;每阶段都是以键值对(key-value)作为输入和输出的;在执行mapreduce任务时,一个大数据集会被划分为许多独立的的数据块,称为输入分片。hadoop为每个分片构建一个map任务,即运行自定义的map函数,处理分片中的每一条记录。map阶段处理后的结果会作为reduce阶段的输入,最后由reduce函数处理并输出最终结果,并吸入文件系统中。

在之前Hadoop的设计目标中学过,移动计算代价比移动数据代价低,移动数据需要大量的网络传输开销。而MapReduce框架就会将map程序就近地在数据所在的节点上运行,也就是说计算和存储是在同一个节点运行的,作业的输入和输出都存储在文件系统中。mapreduce框架负责调度任务,监视人并并重新执行失败的任务。

MapReduce框架由单个在namenode上运行的ResourceManager,和运行在datanode上的NodeManager组成。

输入和输出

MapReduce模型的核心是Map函数和Reduce函数;Map函数和Reduce函数都是以key-value作为输入,按一定的映射规则转换成另一批key-value输出:

  • Map:(K1,V1) ➡ list((K2,V2))
  • Reduce:(K2,list(V2)) ➡ list(K3,V3)

可理解为:

  • map阶段:将数据集分解为一批分片(K1,V1),map函数对每一个分片进行处理输出一批(K2,V2)
  • reduce阶段:接收来自map阶段的(K2,V2),并将相同key值的键值对整合成(K2,list(V2)),最后做执行redeuce函数,输出一批(K3,V3)

map函数键值对的输出类型与reduce函数的输入类型一定是相同的;

map函数的输入来自于文件系统中的文件块,reduce函数会将输出结果合并成一个文件

map函数:

pub

你可能感兴趣的:(Hadoop,hadoop,mapreduce)