resourcemanager: 负责资源的调度,管理资源和分配资源,负责接受任务,但不会追踪或监听任务的执行过程,任务失败与否和他无关. nodemanager需要定时与resourcemanager保持心跳,报告内存和core资源
nodemanager: 提供资源的节点.负责启动APPmaster申请的进程资源和关闭APPmaster使用完的进程资源
applicationMaster(APPmaster): 负责向resourcemanager申请资源,连接nodemanager,在nodemanager启动进程.监控整个任务的执行过程,如果任务失败则会让nodemanager重新启动一个进程来执行
yarn上任务的执行流程:
1.客户端发起任务执行
2.resourcemanager接收到任务,并在某个nodemanager上启动一个APPmaster
3.APPmaster根据任务需要的资源向resourcemanager申请资源
4.resourcemanager根据整个集群资源使用情况提供给APPmaster相应的资源,返回一个资源列表
5.APPmaster根据资源列表向nodemanager申请资源,nodemanager启动资源给APPmaster
APPmaster启动进程
6.在执行任务过程中APPmaster监控所有进程,保证任务顺利执行,如果task任务报错,则会重新启动task,如果依旧报错则会任务报错,程序结束