作为CGFT金融科技分析师,对科技也有了解,也要学习一定的大数据,那在学习中对WordCount程序任务了解多少呢?给你说说一下MapReduce过程实际的执行!

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

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

CFGFT金融科技分析师

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

缓冲区中的中间结果会被定期刷写到本地磁盘上,并被划分为个分区,这7?个分区会被分发给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函数,结果写人到输出文件中;执行完毕后,唤醒用户程序,返回结果。