CGFT考试科目中是有《大数据技术原理及应用》,今天-就跟着小编一起看看MapReduce的具体执行过程!看看你是不是掌握了呢?没有的话,那更要看看了!

对于WordCount程序任务,整个MapReduce过程实际的执行顺序如下。


①执行WordCount的用户程序(采用MapReduce编写),会被系统分发部署到集群中的多台机器上,其中一个机器作为Master,负责协调调度作业的执行,其余机需法,可以执行MapReduce任务。

②系统分配一部分Worker执行Map任务,一部分Worker执行Reduce任务;MapReduce将输入文件切分成M个分片,MasterM个分片分给处于空闲状态的NWorker来处理;

③执行Map任务的Worker读取输入数据,执行Map操作,生成一系列《key,value》形式的中间结果,并将中间结果保存在内存的缓冲区中。

④缓冲区中的中间结果会被定期刷写到本地磁盘上,并被划分为R个分区,这R个分区会被分发给R个执行Reduce任务的Worker进行处理:Master会记录这R个分区在磁盘上的存储位置,并通知R个执行Reduce任务的Worker来“领取”属于自己处理的那些分区的数据。

⑤执行Reduce任务的Worker收到Master的通知后,就到相应的Map机器上“领回”属于自己处理的分区,需要注意的是,正如之前在Shuffle过程阐述的那样,可能会有多个Map机器通知某个Reduce机器来领取数据,因此,一个执行Reduce任务的Worker,可能会从多个Map机器上领取数据。当位于所有Map机器上的、属于自己处理的数据,都已经领取回来以后,这个执行Reduce任务的Worker,会对领取到的键值对进行排序(如果内存中放不下需要用到外部排序),使得具有相同key的键值对聚集在一起,然后就可以开始执行具体的Reduce操作了。

⑥执行Reduce任务的Worker通历中间数据,对每一个*key,执行Reduce函数,结果写入到输出文件中;执行完毕后,唤醒用户程序,返回结果。