Spark on YARNnode
YARN概述网络
YARN是什么架构
Apache Hadoop YARN(Yet Another Resource Negotiator,另外一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。app
YARN在Hadoop生态系统中的位置框架
YARN产生的背景oop
随着互联网高速发展致使数据量剧增,MapReduce 这种基于磁盘的离线计算框架已经不能知足应用要求,从而出现了一些新的计算框架以应对各类场景,包括内存计算框架、流式计算框架和迭代式计算框架等,而MRv1 不能支持多种计算框架并存。学习
YARN基本架构spa
ResourceManager(RM)server
ResourceManager负责集群资源的统一管理和调度,承担了 JobTracker 的角色,整个集群只有“一个”,总的来讲,RM有如下做用:blog
NodeManager(NM)
NodeManager管理YARN集群中的每一个节点。NodeManager 提供针对集群中每一个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。MRv1 经过slot管理 Map 和 Reduce 任务的执行,而 NodeManager 管理抽象容器,这些容器表明着可供一个特定应用程序使用的针对每一个节点的资源。NM有如下做用
ApplicationMaster(AM)
每一个应用有一个,负责应用程序的管理 。ApplicationMaster 负责协调来自 ResourceManager 的资源,并经过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。请注意,尽管目前的资源更加传统(CPU 核心、内存),但将来会支持新资源类型(好比图形处理单元或专用处理设备)。AM有如下做用:
Container
Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源即是用Container表示的。YARN会为每一个任务分配一个Container,且该任务只能使用该Container中描述的资源。Container有如下做用:
Spark on YARN运行架构解析
回顾Spark基本工做流程
以SparkContext为程序运行的总入口,在SparkContext的初始化过程当中,Spark会分别建立DAGScheduler做业调度和TaskScheduler任务调度两级调度模块。其中做业调度模块是基于任务阶段的高层调度模块,它为每一个Spark做业计算具备依赖关系的多个调度阶段(一般根据shuffle来划分),而后为每一个阶段构建出一组具体的任务(一般会考虑数据的本地性等),而后以TaskSets(任务组)的形式提交给任务调度模块来具体执行。而任务调度模块则负责具体启动任务、监控和汇报任务运行状况。
YARN standalone/YARN cluster
YARN standalone/YARN cluster
Spark Driver首选做为一个ApplicationMaster在Yarn集群中启动,客户端提交给ResourceManager的每个job都会在集群的worker节点上分配一个惟一的ApplicationMaster,由该ApplicationMaster管理全生命周期的应用。由于Driver程序在YARN中运行,因此事先不用启动Spark Master/Client,应用的运行结果不能再客户端显示(能够在history server中查看)
YARN standalone/YARN cluster
YARN client
YARN client
在Yarn-client模式下,Driver运行在Client上,经过ApplicationMaster向RM获取资源。本地Driver负责与全部的executor container进行交互,并将最后的结果汇总。结束掉终端,至关于kill掉这个spark应用。通常来讲,若是运行的结果仅仅返回到terminal上时须要配置这个。
如何选择
其余配置和注意事项
如何更改默认配置
环境变量
相关配置
特别注意
以上就是博主为你们介绍的这一板块的主要内容,这都是博主本身的学习过程,但愿能给你们带来必定的指导做用,有用的还望你们点个支持,若是对你没用也望包涵,有错误烦请指出。若有期待可关注博主以第一时间获取更新哦,谢谢!同时也欢迎转载,但必须在博文明显位置标注原文地址,解释权归博主全部!