拂晓 2015-10-07
了解mapreduce的工作机制,对编写mapreduce高级编程奠定基础。
一、mapreduce1的最顶层
包含4个独立的实体
客户端:提交mapreduce作业,jobtracker:协调作业的运行,tasktracker:运行作业划分后的任务,分布式文件系统:用来在其他实体间共享作业文件。
二、mapreduce1的过程
1:作业的提交,有客户端提交任务给jobtracker
2:作业的初始化,jobtracker接受到请求后,会进初始化,同时会创建一个表示正在作业的对象,用于封装任务和记录信息,以便跟踪任务的状态和进程。
3:任务的分配,tasktracker 通过发送心跳给jobtracker,如果tasktracker存活的话,jobtracker会为它分配一个任务。
注意:对于map任务,jobtracker会考虑tasktracker的网络位置,并选取一个距离其输入分片文件最近的tasktracker,最理想情况下,任务是数据本地化的。而对于reduce任务不需要考虑数据本地化。
4:任务的执行, 需要完成三步
通过从共享文件系统把作业的jar文件复制到tasktracker所在的文件系统,从而实现作业的jar本地化,同时,tasktracker将应用程序所需要的全部文件从分布式缓存复制到本地磁盘
tasktracker为任务新建一个本地工作目录,并把jar文件中的内容解压到这个文件夹下
tasktracker新建一个TaskRunner实列来运行任务
5:进度和状态:跟踪
6:作业完成,设置完成状态
三、mapreduce2(Yarn)的过程
1、当集群节点超过4000的大型集群,mapreduce1扩展会超过瓶颈。mapreduce2将jobtracker的职能划分为多个独立的实体。
2、mapreduce2将资源管理器和应用管理器划分为两个独立的守护进程,应用管理器和资源管理器协商集群的计算资源
使用mapreduce2的优势:不同的Yarn应用可以在同一个集群上,可以在一个Yarn集群上运行不同版本的mapreduce
3、Yarn的实体
提交mapreduce作业的客户端
Yarn资源管理器,负责协调集群上计算资源的分配
Yarn节点管理器(应用管理器),负责启动和监视集群中机器上的计算容器
MapReduce应用程序master负责协调运行MapReduce作业的任务
分布式文件系统
4 shuffle和排序
mapreduce确保每个reducer的输入都是按键排序的。系统执行排序的过程(map输出作为输入传给reducer)称为shuffle。
通过实现MapReduce计算结果保存到MySql数据库过程,掌握多种方式保存计算结果的技术,加深了对MapReduce的理解;创建maven项目,项目名称hdfs,这里不再说明。红色部分为增加内容: