3.MR应用_经典案例WordCount

一.MapReduce WordCount

MapReduce将作业的整个运行过程分为两个阶段:Map阶段Reduce阶段。

Map阶段由一定数量的Map Task组成,例如:

  • 输入数据格式解析:InputFormat
  • 输入数据处理:Mapper
  • 数据分组:Partitioner
  • 数据按照key排序
  • 本地规约:Combiner(相当于local reducer,可选)
  • 将任务输出保存在本地

Reduce阶段由一定数量的Reduce Task组成,例如:

  • 数据远程拷贝
  • 数据按照key排序
  • 数据处理:Reducer
  • 数据输出格式:OutputFormat

通常我们把从Mapper输出数据到Reduce读取数据之间的过程称之为shuffle。在shuffle过程中,我们把各个Mapper的相同Partitioner的数据拷贝到同一个Reducer机器节点上,进行合并和排序。

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordCount {

  //自定义Mapper类
  public static class TokenizerMapper
       extends Mapper<Object, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();
    //每次输入一行就会调用一次map方法
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值