首先放张YARN官网的图便于理解:
讲一下YARN的优点(网上一搜一箩筐):
首先要提一下MapReduce1,它只包含JobTracker(协调在集群上运行的所有作业)和TaskTracker(运行分配的任务并定期向 JobTracker 报告进度),主要存在这样几个问题:
- JobTracker容易存在单点故障;
既要负责资源管理,又要进行作业调度,负担重;当需处理太多任务时,会造成过多的资源消耗。 - 当mapreduce job非常多的时候,会造成很大的内存开销,在
TaskTracker端,以mapreduce task的数目作为资源的表示过于简单,没有考虑到cpu以及内存的占用情况,如果两个大内存消耗的task被调度到了一块,很容易出现OutOfMemory异常。 - 在TaskTracker端,把资源强制划分为map task slot和reduce task slot,无法有效利用资源。
然后才是YARN的主场:
- YARN的设计减小了JobTracker的资源消耗,并且让监测每一个Job子任务(tasks)状态的程序分布式化了(使用Application Master)。
- Application Master是一个可变更的部分,可以定制自己的编程模型。
- 对于资源的表示以内存为