MapReduce是Hadoop开源大数据包的重要计算工具,后期的Spark、Storm等组件均采用MapReduce的计算模型。而MapReduce在工作时,实际与HDFS在一起工作。接下来我用一个案例来解析MapReduce的工作流程。
1、Java程序采用MapReduce的SDK开发包进行程序开发。实际程序启动时,将在客户端创建一个JobClient端,正式开启一个MapReduce实例。
2、JobClient通过getNewJobId()接口向Master节点中的JobTracker请求创建一个新的MapReduce作业。
3、JobClient将程序执行JAR包、配置文件、数据块,下发到HDFS中属于JobTracker的目录下。
4、完成以上准备工作后,JobClient调到JobTrakcer的submitJob()接口提交作业。
5、JobTracker将提交的作业放入作业队列中等待作业调度。
6、JobTrakcer从HDFS中取出JobClient放好的数据,并创建对应数据的Map任务及Reduce任务。
7、接下来,JobTracker将空闲的TaskTracker分配具体的Map任务和Reduce任务。正常情况下,HDFS存储的服务器与Map任务服务器应在同一台服务器,以减少数据在不同服务器的copy时间。
8、被分配了任务的TaskTracker从HDFS文件中取出所需的文件,包括JAR包和数据文件,存入本地磁盘ÿ