手机版网站嵌入代码,龙岩天宫山攻略,包工头网,seo职业发展Spark on YARN运行过程
YARN是一种统一资源管理机制#xff0c;在其上面可以运行多套计算框架。目前的大数据技术世界#xff0c;大多数公司除了使用Spark来进行数据计算#xff0c;由于历史原因或者单方面业务处理的性能考虑而使用着其他的计算框架#xff0c;比如MapRed…Spark on YARN运行过程
YARN是一种统一资源管理机制在其上面可以运行多套计算框架。目前的大数据技术世界大多数公司除了使用Spark来进行数据计算由于历史原因或者单方面业务处理的性能考虑而使用着其他的计算框架比如MapReduce、storm等计算框架。Spark基于此种情况开发了Spark on YARN的运行模式由于借助了YARN良好的弹性资源管理机制不仅部署Application更加方便而且用户在YARN集群中运行的服务和Application的资源也完全隔离更具实践应用价值的是YARN可以通过队列的方式管理同时运行在集群中的多个服务。
Spark on YARN模式根据Driver在集群中的位置分为两种模式一种是YARN-Client模式另一种是YARN-Cluster。
YARN-Client
简单版本
1、在客户端执行提交命令在本地启动一个Drive进程.
2、Drive进程启动完毕后会向ResourceManager申请启动一个ApplicationMaster.
3、RM 收到请求随机选择一台 NodeManager 启动 ApplicationMaster.
4、AM启动后会向RM请求一批Container资源用于启动Executor.
5、RM会找到一批NM返回给AMAM会向NM发送命令启动Executor.
6、Executor启动后会反向注册给DriverDriver发送Task到Executor.
详细版本
YARN-Client模式中Driver在客户端本地运行这种模式可以使得Spark
Application和客户端进行交互因为Driver在客户端所以可以通过webUI访问Driver的状态默认是http://hadoop1:4040访问而YARN通过http:// hadoop1:8088访问。
YARN-Client的工作流程分为以下几个步骤
1.Spark YARN Client向YARN的ResourceManager申请启动ApplicationMaster。同时在SparkContent初始化中将创建DAGScheduler和TaskScheduler等由于我们选择的是YARN-Client模式程序会选择
YARNClientClusterScheduler和YARNClientSchedulerBackend
2.ResourceManager收到请求后在集群中选择一个NodeManager为该应用程序分配第一个Container要求它在这个Container中启动应用程序的ApplicationMaster与YARN-Cluster区别的是在该ApplicationMaster不运行SparkContext只与SparkContext进行联系进行资源的分派
3.Client中的SparkContext初始化完毕后与ApplicationMaster建立通讯向ResourceManager注册根据任务信息向ResourceManager申请资源Container
4.一旦ApplicationMaster申请到资源也就是Container后便与对应的NodeManager通信要求它在获得的Container中启动
CoarseGrainedExecutorBackendCoarseGrainedExecutorBackend启动后会向Client中的SparkContext注册并申请Task
5.Client中的SparkContext分配Task给CoarseGrainedExecutorBackend执行CoarseGrainedExecutorBackend运行Task并向Driver汇报运行的状态和进度以让Client随时掌握各个任务的运行状态从而可以在任务失败时重新启动任务
6.应用程序运行完成后Client的SparkContext向ResourceManager申请注销并关闭自己。 总结
YARN-Client模式适用于测试因为Driver运行在本地Driver会与YARN集群中的Executor进行大量的通信会造成客户机网卡流量的大量增加 ApplicationMaster的作用
1、为当前的Application申请资源
2、给NodeManager发送消息启动Executor。
注意ApplicationMaster有launchExcutor和申请资源的功能并没有作业调度的功能。
YARN-Cluster
简单版本
执行流程
1、客户端执行提交命令并不会启动Drive进程客户端向RM申请启动一个ApplicationMaster
2、RM收到请求后随机在一台NM上启动AM相当于Driver端
ApplicationMaster(Driver)启动成功后向RM申请资源
3、AM启动后AM发送请求到RM请求一批Container用于启动Excutor。
4、RM返回一批NM节点给AMAM发送请求到NM启动Executor。
5、 Executor反向注册到AM所在的节点的Driver。Driver发送Task到Executor。
详细版本
在YARN-Cluster模式中当用户向YARN中提交一个应用程序后YARN将分两个阶段运行该应用程序第一个阶段是把Spark的Driver作为一个ApplicationMaster在YARN集群中先启动第二个阶段是由ApplicationMaster创建应用程序然后为它向ResourceManager申请资源并启动Executor来运行Task同时监控它的整个运行过程直到运行完成。
YARN-Cluster的工作流程分为以下几个步骤
1.Spark YARN Cluster向YARN中提交应用程序包括ApplicationMaster程序、启动ApplicationMaster的命令、需要在Executor中运行的程序等
2.ResourceManager收到请求后在集群中选择一个NodeManager为该应用程序分配第一个Container要求它在这个Container中启动应用程序的ApplicationMaster其中ApplicationMaster进行SparkContext等的初始化
3.ApplicationMaster向ResourceManager注册这样用户可以直接通过ResourceManage查看应用程序的运行状态然后它将采用轮询的方式通过RPC协议为各个任务申请资源并监控它们的运行状态直到运行结束
4.一旦ApplicationMaster申请到资源也就是Container后便与对应的NodeManager通信要求它在获得的Container中启动启动CoarseGrainedExecutorBackendCoarseGrainedExecutorBackend启动后会向ApplicationMaster中的SparkContext注册并申请Task。这一点和Standalone模式一样只不过SparkContext在Spark Application中初始化时使用CoarseGrainedSchedulerBackend配合YARNClusterScheduler进行任务的调度其中YARNClusterScheduler只是对TaskSchedulerImpl的一个简单包装增加了对Executor的等待逻辑等
5.ApplicationMaster中的SparkContext分配Task给CoarseGrainedExecutorBackend执行CoarseGrainedExecutorBackend运行Task并向ApplicationMaster汇报运行的状态和进度以让ApplicationMaster随时掌握各个任务的运行状态从而可以在任务失败时重新启动任务
6.应用程序运行完成后ApplicationMaster向ResourceManager申请注销并关闭自己。 总结
YARN-Cluster主要用于生产环境中因为Driver运行在YARN集群中某一台NodeManager中每次提交任务的Driver所在的机器都是随机的不会产生某一台机器网卡流量激增的现象缺点是任务提交后不能看到日志。只能通过YARN查看日志。
ApplicationMaster的作用
1、为当前的Application申请资源。
2、给NameNode发送消息启动Excutor。
3、任务调度。