Hadoop学习笔记-MapperReduce简介
前言:
本文将对Hadoop里面的一个核心木块—MapperReduce进行一定的了解。主要是从map函数和reduce函数以及数据是如果在这里两个函数之间流转的,以及分布式的处理过程。介绍可能比较简单,毕竟我也是菜鸟,希望有不对之处还望指出。
一个简单字母统计的例子
本文并没有采用《Hadoop权威指南》里面统计最高气温的例子,而是用了一个比较简单的统计字母个数的例子。本实例包括三个class文件,文件组织组织结构如下:FindSameAlphaMapper就是一个map操作,相应的FindSameAlphaReduce是一个reduce操作,而map和reduce则是交给一个Job来调用,则有JobRun来调用。
代码内容如下:
FindSameAlphaMapper.java
package com.jdream314.mapper;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
/**
*
* <pre>
* Mapper
* </pre>
* @author xxx
* @version 1.00.00
* <pre>
* 修改记录
* 修改后版本: 修改人: 修改日期: 修改内容:
* </pre>
*/
public class FindSameAlphaMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
/* (non-Javadoc)
* @see org.apache.hadoop.mapreduce.Mapper#map(java.lang.Object, java.lang.Object, org.apache.hadoop.mapreduce.Mapper.Context)
*/
private Text word = new Text();
private final static IntWritable one = new IntWritable(1);
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String text = value.toString();
for(char al:text.toCharArray()){
context.write(new Text(String.valueOf(al)),new IntWritable(1));
}
}
}
FindSameAlphaReduce.java
package com.jdream314.reduce;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;