YARN-ApplicationMaster
单个作业的资源管理和任务监控
具体功能描述:
1. 计算应用的资源需求,资源可以是静态或动态计算的,静态的一般是Client 申请时就指定了,动态则需要ApplicationMaster 根据应用的运行状态来决定
2. 根据数据来申请对应位置的资源(Data Locality)
3. 向ResourceManager申请资源,与NodeManager 交互运行程序的运行和监控,监控申请的资源的使用情况,监控作业进度。
4.跟踪任务状态和进度,定时向ResourceManager 发送心跳消息,报告资源的使用情况和应用的进度信息。
5. 负责本作业内的任务的容错
ApplicationMaster 可以是用任何语言编写的程序,它和ResourceManager 和NodeManager 之间是通过ProtocalBuff 交互,以前是一个全局的JobTracker 负责的。现在每个作业都一个,可伸缩性更强,至少不会因为作业太多,造成JobTracker 瓶颈。同时将作业的逻辑放到一个独立的ApplicationMaster 中,使得灵活性更加高,每个作业都可以有自己的处理方式,不用绑定到MapReduce 的处理模式上。
如何计算资源需求
一般的MapReduce 是根据block 数量来定Map和Reduce 的计算数量,然后一般的Map或Reduce 就是占用一个Container
如何发现数据的本地化
数据本地化是通过HDFS的block 分片信息获取的。