案例简述MapReduce与HDFS协同工作流程

       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包和数据文件,存入本地磁盘,并启动TaskRunner程序。

        9、TaskRunner在本地创建出MapTask或ReduceTask。该两个子程序会定时与TaskRunner报告进度,直到任务完成。

        至此,整个MapReduce程序完成。

        大家会发现,MapReduce程序处理流程非常复杂,最关键的为数据的下发、数据的调度全部基于磁盘,任务的调度、磁盘的数据读取成为MapReduce效率不高的主要原因。因此MapReduce主要用于离线数据处理,数据量越大,其大数据计算处理的作用越明显。

希望以上文章能帮到您。

更多内容实时更新,请访问公众号。    

点击这里,获取最高¥1888阿里云产品通用代金券

猜你喜欢

转载自blog.csdn.net/qq_29718979/article/details/88385678