简单理解,MapReduce计算框架:
把需要计算的东西放入到MapReduce中进行计算,然后返回一个我们期望的结果。
所以首先我们需要一个来源(需要计算的东西)即输入(input),然后MapReduce操作这个输入(input),通过定义好的计算模型,最后得到一个(期望的结果)输出(output)。
在这里我们主要讨论的是MapReduce计算模型:
在运行一个mapreduce计算任务时候,任务过程被分为两个阶段:map阶段和reduce阶段,每个阶段都是用键值对(key/value)作为输入(input)和输出(output)。而程序员要做的就是定义好这两个阶段的函数:map函数和reduce函数。
实例代码 :
以MapReduce统计单词次数为例(伪代码),主要四个模块来讲解,如上图计算框架:
1、Input,数据读入
// 设置数据输入来源
FileInputFormat.setInputPaths(job, args[0]);
FileInputFormat.setInputDirRecursive(job, true); //递归
job.setInputFormatClass(TextInputFormat.class); //设置输入格式
//TextInputFormat,一种默认的文本输入格式,Mapper一次读取文本中的一行数据。
2、使用Mapper计算
//设置Job的Mapper计算类和K2、V2类型
job.setMapperClass(WordCountMapper.class); //1.设置Mapper类
job.setMapOutputKeyClass(Text.class); //设置Mapper输出Key的类型
job.setMapOutputValueClass(LongW