大数据入门:MapReduce核心架构

在大数据处理上,MapReduce可以说是非常具备代表性的一代框架,尤其是在以Hadoop为首的离线批处理框架当中,MapReduce是核心的数据处理引擎,而随后的Spark其实也是在MapReduce基础之上发展而来的。今天的大数据入门分享,我们就主要来讲讲MapReduce核心架构。

MapReduce支持大规模数据集的处理,主要的思想是分布式并行计算,通过将大的任务进行拆分,小任务并行计算,大大提升了大规模数据处理的效率问题。

大数据入门:MapReduce核心架构

MapReduce架构成员

通常来说,MapReduce计算引擎的核心架构,包括有Client、Job Tracker、TaskTracker以及Task。

Client

Client的含义是指用户使用MapReduce程序通过Client来提交任务到Job Tracker上,同时用户也可以使用Client来查看一些作业的运行状态。

Job Tracker

Job Tracker负责的是资源监控和作业调度。JobTracker会监控着TaskTracker和作业的健康状况,会把失败的任务转移到其他节点上,同时也监控着任务的执行进度、资源使用量等情况,会把这些消息通知任务调度器,而调度器会在资源空闲的时候选择合适的任务来使用这些资源。

TaskTracker

TaskTracker会周期性地通过Hearbeat来向Job Tracker汇报自己的资源使用情况和任务的运行进度。会接受来自于JobTaskcker的指令来执行操作(例如启动新任务、杀死任务之类的)。

在TaskTracker中通过的是slot来进行等量划分一个节点上资源量,只用Task获得slot的时候才有机会去运行。调度器的作用就是进行将空闲的slot分配给Task使用,可以配置slot的数量来进行限定Task上的并发度。

Task

Task分为Map Task和Reduce Task,在MapReduce中的split就是一个Map Task,split的大小可以设置的,由mapred.max.spilt.size参数来设置,默认是Hadoop中的block的大小,在Hadoop 2.x中默认是128M,在Hadoop 1.x中默认是64M。

大数据入门:MapReduce核心架构

MapReduce架构设计

作业的提交和初始化

由用户提交作业之前,需要先把文件上传到HDFS上,JobClient使用upload来加载关于打包好的jar包,JobClient会RPC创建一个JobInProcess来进行管理任务,并且创建一个TaskProcess来管理控制关于每一个Task。

JobTracker调度任务

JobTracker会调度和管理任务,一发现有空闲资源,会按照一个策略选择一个合适的任务来使用该资源。

任务调度器有两个点:一个是保证作业的顺利运行,如果有失败的任务时,会转移计算任务,另一个是如果某一个Task的计算结果落后于同一个Task的计算结果时,会启动另一个Task来做计算,最后取计算结果最块的那个。

任务运行环境

TaskTracker会为每一个Task来准备一个独立的JVM从而避免不同的Task在运行过程中的一些影响,同时也使用了操作系统来实现资源隔离防止Task滥用资源。

执行任务

每个Task的任务进度通过RPC来汇报给TaskTracker,再由TaskTracker汇报给JobTracker。

任务结束,写入输出的文件到HDFS中。

大数据入门:MapReduce核心架构

关于大数据入门,MapReduce核心架构,以上就为大家做了简单的介绍了。时至今日,MapReduce仍然是大数据分布式处理的重要指导思想,学习当中需要更加深入地去理解和掌握。

上一篇:分布式文件上传-FastDFS


下一篇:fastdfs 中client.conf 文件