YARN 架构
1、ResourceManager(RM)
总的来说,RM有以下作用
-
处理客户端请求
-
启动或监控ApplicationMaster
-
监控NodeManager
-
资源的分配与调度
2、ApplicationMaster(AM)
ApplicationMaster 管理在YARN内运行的每个应用程序实例。ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。
总的来说,AM有以下作用
-
负责数据的切分
-
为应用程序申请资源并分配给内部的任务
-
任务的监控与容错
3、NodeManager(NM)
NodeManager管理YARN集群中的每个节点。NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。
总的来说,NM有以下作用
-
管理单个节点上的资源
-
处理来自ResourceManager的命令
-
处理来自ApplicationMaster的命令
4、Container
Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
总的来说,Container有以下作用
-
对任务运行环境进行抽象,封装CPU、内存等多维度的资源以及环境变量、启动命令等任务运行相关的信息。