一直对hadoop这套局限在会用就好,没有对hadoop生态有个系统性的深入了解,也就导致在用的时候出问题很难找到关键的原因,都得google so 各种找相关信息。所以现在觉得,还是得花一些时间,至少把与平时用到的相关部分的原理、概念理解清楚。
只要是用hadoop生态的组件,很多都会用YARN来管理资源与任务分配。而资源分配的合理与否,直接关系到任务的执行效率,甚至决定成功或失败。spark又是现在主流的大数据计算框架,所以就把理解清楚yarn的架构以及spark与yarn的结合作为学习的起始点吧。
YARN的架构
YARN是(Yet Another Resource Negotiator,另一种资源协调者)的缩写。主要用来管理分布式集群的资源,理解YARN主要得理解4个抽象的组件。ResourceManager、ApplicationMaster、NodeManager与Container。
ResourceManager:可以理解为整个分布式集群的主管,负责管理整个集群的资源分配。
ApplicationMaster:一个集群中可以运行有多个应用,可以是map reduce, 可以是spark应用等,只要是适用YARN做资源分配的每一个应用都会有一个ApplicationMaster,它负责向ResourceManager申请资源,以及与NodeManager协调执行具体的任务。
NodeManager:作为ResourceManager的slave(worker),启动container,管理资源以及向ResourceManager汇报资源使用情况。
Container