Hadoop YARN集群的工作流程

第一步、Client 对 ResouceManager 发起提交作业申请;
第二步、ResouceManager 返回 JobID(即 Application ID)和保存数据资源(作业的 Jar 文件,配置文件,计算所得输入分片,资源信息等)的临 时目录(使用 JobID 命名的目录,hdfs://xxx/staging/xxx);
第三步、接着 Client 计算分片,拷贝资源(作业的 Jar 文件,配置文件,计算所得输入分片,资源信息等)到 HDFS,最后用 submitApplication 函数 提交 Job 给 ResouceManager; ApplicationManager 接收 submitApplication 方法提交的 Job,并将其交给 ResourceScheduler(调度器)处理;
第四步、ResourceScheduler 选择一台 NodeManager 分配一个 Container,在 Container 中开启 ApplicationMaster 进程;
第五步、首先ApplicationMaster 向 ResourceManager 进行注册,这样用户可以直接通过 ResourceManager 查看应用程序的运行状态;然后 ApplicationMaster 收集计算后的输入分片情况来向 ResouceManager 申请对应的资源以运行 Task;最后 ApplicationMaster 初始化一定数 量的记录对象(bookkeeping)来跟踪 Job 的运行进度,并收集每个 Task 的进度和完成情况,直到运行结束;
第六步、ApplicationMaster 采用轮询的方式,通过 RPC 协议向 ResourceManager 申请和领取资源;
第七步、ApplicationMaster 申请到资源后,会与对应的 NodeManager 进行通讯,要求它启动 Container;
第八步、NodeManager 为任务设置好运行环境(包括环境变量、Jar 包、二进制程序等)后,将 Task 启动命令写到一个脚本中,并通过运行该脚本启动对应的任务;

各个任务通过 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,方便 ApplicationMaster 随时掌握各个任务的运行状态,从而 可以在任务失败的时候重新启动任务;

此期间,客户端会每秒轮询检测 ApplicationMaster,这样就会随时收到更新信息,这些信息可以通过 Web UI 来进行查看。除此之 外,客户端还会每 5 秒轮询检查 Job 是否完成,需要调用 Job 类下的 waitForCompletion() 方法,Job 结束后该方法返回。轮询时间间隔可以通过 mapreduce.client.completion.pollinterval 进行设置。

应用程序运行完成后,ApplicationMaster 向 ResourceManager 注销并关闭自己。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值