spark中spark-submit内部实现原理.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
spark中spark-submit内部实现原理

这两天在看spark-submit之后任务是怎么启动的,写篇文章记录一下自己的理解思路: SparkSubmit(SparkDeploySchedulerBackend(AppClient(tryRegisterAllMaster 1:客户端启动,初始化相关的环境变量,包括Application代码的提交 2:向Master注册Driver 这里需要注意,Master,Worker是已经启动,换句话说,我们的spark集群已经启动。 3: SparkDeploySchedulerBackend中启动Application。向Master注册Application def registerWithMaster() { tryRegisterAllMasters() import context.dispatcher var retries = 0 registrationRetryTimer = Some { context.system.scheduler.schedule(REGISTRATION_TIMEOUT, REGISTRATION_TIMEOUT) { Utils.tryOrExit { retries += 1 if (registered) { registrationRetryTimer.foreach(_.cancel()) } else if (retries = REGISTRATION_RETRIES) { markDead(All masters are unresponsive! Giving up.) } else { tryRegisterAllMasters() } } } } } def tryRegisterAllMasters() { for (masterAkkaUrl - masterAkkaUrls) { logInfo(Connecting to master + masterAkkaUrl + ...) val actor = context.actorSelection(masterAkkaUrl) actor ! RegisterApplication(appDescription) } } 主要是这两段代码:SparkDeploySchedulerBackend中有Application的start函数,进入到APPClient中之后,首先向master注册Application,就是上面代码中的tryRegisterAllMasters(),这里会向Master发送RegisterApplication(appDescription)。在Master端通过AKKA收到消息后处理该消息,处理代码如下: case RegisterApplication(description) = { if (state == RecoveryState.STANDBY) { // ignore, dont send response } else { logInfo(Registering app + ) val app = createApplication(description, sender) registerApplication(app) logInfo(Registered app + + with ID + app.id) persistenceEngine.addApplication(app) sender ! RegisteredApplication(app.id, masterUrl) schedule() } } 进行注册Application,并且发送已经注册App的消息。然后进行schedule()。 Schedule函数如下: /** * Schedule the currently available resources among waiting apps. This method will be called * every t

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档