MapReduce运行机制

来源:互联网 发布:java一年经验简历 编辑:程序博客网 时间:2024/05/16 10:48



今天,我们来简单地聊聊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
原创粉丝点击