相关文章:
Mapreduce&yarn工作机制:
Mapreduce程序运行过程是这样的:程序通过job.submit()提交后,通过YARNRunner中动态代理(proxy)远程调用,跟yarn resourcemanager通信,获得一个资源提交路径和jobid,然后客户端mapreduce程序通过HDFS获得文件的信息(文件大小),根据文件大小和用户设置的minsize、maxsize参数,对文件进行切片规划,并最终形成job.split文件提交到提交路径上去,此外还会将程序运行的jar包和job参数形成job.xml提交到提交路径上。最后向resourcemanager发送提交完毕的信息,并且申请运行appmaster。
Resourcemanager将用户的请求初始化成一个task,放到调度队列里面。Nodemanager按一定心跳频率,访问队列查看是否有自己的任务,其实这里也是RPC调用,通过调用返回的值,来确定有没有自己的任务,有就领取任务。
nodamanager根据任务参数,构造出具体cpu和内存的container,用来运行appmaster,同时将提交路径上的job.xml\job.split\....jar,下载到本地,appmaster根据切片信息,判断出每个切片所在的datanode,然后再向resourcemanager申请运行maskTask,resourcemanager将他加入到调度队列中,等待nodemanager来领取任务。剩下的过程和前面类似。
具体mapreduce运行流程请看:
最后配张流程图: