温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

spark on yarn的两种提交方式分别是什么

发布时间:2021-12-16 18:52:42 来源:亿速云 阅读:207 作者:柒染 栏目:云计算

这篇文章给大家介绍spark on yarn的两种提交方式分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

  和yarn-cluster模式一样,整个程序也是通过spark-submit脚本提交的。但是yarn-client作业程序的运行不需要通过Client类来封装启动,而是直接通过反射机制调用作业的main函数。下面就来分析:
  1、通过SparkSubmit类的launch的函数直接调用作业的main函数(通过反射机制实现),如果是集群模式就会调用Client的main函数。
  2、而应用程序的main函数一定都有个SparkContent,并对其进行初始化;
  3、在SparkContent初始化中将会依次做如下的事情:设置相关的配置、注册MapOutputTracker、 BlockManagerMaster、BlockManager,创建taskScheduler和dagScheduler;其中比较重要的是创建 taskScheduler和dagScheduler。在创建taskScheduler的时候会根据我们传进来的master来选择 Scheduler和SchedulerBackend。由于我们选择的是yarn-client模式,程序会选择YarnClientClusterScheduler和YarnClientSchedulerBackend,并将YarnClientSchedulerBackend 的实例初始化YarnClientClusterScheduler,上面两个实例的获取都是通过反射机制实现 的,YarnClientSchedulerBackend类是CoarseGrainedSchedulerBackend类的子 类,YarnClientClusterScheduler是TaskSchedulerImpl的子类,仅仅重写了TaskSchedulerImpl 中的getRackForHost方法。
  4、初始化完taskScheduler后,将创建dagScheduler,然后通过taskScheduler.start()启动 taskScheduler,而在taskScheduler启动的过程中也会调用SchedulerBackend的start方法。在 SchedulerBackend启动的过程中将会初始化一些参数,封装在ClientArguments中,并将封装好的 ClientArguments传进Client类中,并client.runApp()方法获取Application ID。
  5、client.runApp里面的做是和前面客户端进行操作那节类似,不同的是在里面启动是ExecutorLauncher(yarn-cluster模式启动的是ApplicationMaster)。
  6、在ExecutorLauncher里面会初始化并启动amClient,然后向ApplicationMaster注册该 Application。注册完之后将会等待driver的启动,当driver启动完之后,会创建一个MonitorActor对象用于和 CoarseGrainedSchedulerBackend进行通信(只有事件AddWebUIFilter他们之间才通信,Task的运行状况不是通 过它和CoarseGrainedSchedulerBackend通信的)。然后就是设置addAmIpFilter,当作业完成的时 候,ExecutorLauncher将通过amClient设置Application的状态为 FinalApplicationStatus.SUCCEEDED。
  7、分配Executors,这里面的分配逻辑和yarn-cluster里面类似,就不再说了。
  8、最后,Task将在CoarseGrainedExecutorBackend里面运行,然后运行状况会通过Akka通知CoarseGrainedScheduler,直到作业运行完成。
  9、在作业运行的时候,YarnClientSchedulerBackend会每隔1秒通过client获取到作业的运行状况,并打印出相应的运行信息,当Application的状态是FINISHED、FAILED和KILLED中的一种,那么程序将退出等待。
  10、最后有个线程会再次确认Application的状态,当Application的状态是FINISHED、FAILED和KILLED中的一种,程序就运行完成,并停止SparkContext。整个过程就结束了。

关于spark on yarn的两种提交方式分别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI