简介:本文介绍了Hadoop的MapReduce计算框架的基本概念和原理,包括其工作机制、编程模型以及如何在Hadoop上编写MapReduce程序。
Hadoop是一个开源的大数据处理框架,广泛应用于大数据的存储和处理。其中,MapReduce是其核心的计算框架,用于处理和生成大数据集。
一、MapReduce基本概念
MapReduce是一种编程模型,用于处理和生成大数据集。它将任务分解为两个主要阶段:Map阶段和Reduce阶段。这两个阶段都是函数式编程的概念,即输入数据和输出结果都是纯函数式编程语言中的函数。
这个Mapper将输入文本中的每个单词作为键,值为1。
public class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(Object key, Text value, Context context) throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {word.set(itr.nextToken());context.write(word, one);}}}
这个Reducer将所有具有相同键的值相加,并将结果输出。
public class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> {private IntWritable result = new IntWritable();public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable val : values) {sum += val.get();}result.set(sum);context.write(key, result);}}