MapReduce运行机制



今天,我们来简单地聊聊hadoop的MapReduce运行时的流程,为了讲解的方便,我这边举一个Couting words with hadoop 这个小程序来说明这个流程。
一、首先,我们编写了统计单词字母的小程序,打成jar 包,如wc-mr.jar 。 MapReduce计算框架是运行在集群上面的。wc-mr.jar被复制并提交到集群上面去(怎么提交的?我后面会继续写文章说明,这里先过)比如,提交到Node1,Node2和 Node3 这两台节点上。
二、集群上的Node节点,这时有些会启动MapTask进程,有些节点会启动ReduceTask进程。当然一个机器上可以运行多个进程,所以也就意味着同一时刻在一台Node节点上可能会有多个MapTask进程或ReduceTask进程。比如这里Node1 和Node2 启动了MapTask进程,Node3 启动了ReduceTask进程。
三、MapTask进程会调用一个类叫RecordReader ,这个类会读取我们的单词文件(block信息),每次读取一行;MapTask进程每调用一次RecordReader,它就会返回key-value值给MapTask进程,紧接着MapTask进程会调用我们wc-mr.jar的WordCountMapper.map()方法,并把key-value值传递过来,这里会输出一些内容。这是Node1上的,同样在Node2流程也是一样的,只是读取的文件不同而已。
四、ReduceTask进程会通过shuffle机制去拿到所有的MapTask进程的输出文件,同时调用我们的wc-mr.jar的WordCountReduce.reduc()方法,紧接着会Context.write()输出数据,最终会往hdfs中持久化数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值