本课主题

  • Master 接收 Worker, Driver, Application 注册
  • Master 处理 Driver 狀态变换
  • Master 处理 Executor 狀态变换

Master 接受 Driver, Worker, Application 注册內幕

可以把 Master 想像成公司里的总经理,Driver 就是客户,Worker 是每个项目的技术领导,Executor 是实际干活的工程师,在实际情况下,他们三个会相互沟通,总经理一般都不会直接跟工程师沟通。但客户、技术领导和工程师一般都会进行沟通。

用这个例子,你就可以理解在 Spark 的世界中Master、Driver、Worker 三者会进行沟通Executor、Driver、Worker 三者也会进行沟通,而 Master 不会直接向 Excecutor 进行沟通。

[下图是 Master 接收 Worker, Driver, Application 的流程图]

Master 對其他组件注册的处理
  1. Master 接受注册的对象主要是 Driver, Application 和 Worker, 需要补充说明的是 Executor 不会注册给 Master,Executor 是注册给 Driver 中的 SchedulerBackend 的;
  2. Worker 是在启动之后主动向Master 注册的,这样设计有一个很大的好处,就是在生产环境下如果想把新的Worker 加入到已经运行的Spark 集群上,此时不需要重新启动Spark 集群就能够使用新加入的Worker 以提升处理能力;Worker 启动后会调用onStart( ) 方法,然后调用 registerWithMaster( ) 来注册给Master。
    [下图是 Worker.scala 中的 onStart 方法]

    这里  registerWithMaster( ) 首先会调用 tryRegisterAllMasters( )
    [下图是 Worker.scala 中的 registerWithMaster 方法]

    [下图是 Worker.scala 中的 tryRegisterAllMasters 方法]

    这里发送一个 RegisterWorker 的 case class 去 masterEndpoint
    [下图是 Worker.scala 中的 registerWithMaster 有一个参数的重载方法]

    在 RegisterWorker 这个数据结构中具体会有 id、host、port、workerEndPoint、cores、memory、webUiPort、publicAddress 等信息。它会首先判断一下 host 是不是空值和 port 必须是大于 0
    [下图是 DeployMessage.scala 中 RegisterWorker 的 case class]
  3. Master 接到 Worker 注册的请求后,首先会判断一下当前的 Master 是否是 Standby 的模式,如果是的话就不处理,然后会判断当前 Master 内存的数据结构 idToWorker 中是否已经有该 Worker 的注册信息,如果有的话此时并不会重覆注册;




  4. 通过持久化引擎例如 ZooKeeper 把注册信息持久化起来
  5. Master 如果决定接收注册的Worker,首先会创建 WorkerInfo 对象来保存注册的 Worker 的信息:然后调用 registerWorker 来执行具体的注册的过程,如果 Worker 状态是 DEAD 的状态则直接过滤掉,对于 UNKNOWN 状态的内容会调用 removeWorker 方法来进行清理(包括清理该工人下的 Executors 和驱动程序。
  6. 注册的时候会先注册 Driver 然后再注册 Application

Master 处理 Driver 狀态变换

  • Master 对 Driver 和 Executor 状态变化的出来,只有 Driver 的状态发生变发就直接调用 removeDriver 方法
  • 首先查看有没有这个 driver,要看看曾经有没有登记
 

Master 处理 Executor 狀态变换

  • 首先是查询一次有没有这个 Executor 注册的信息,
  • Executor 挂掉的时候系统会进行一定次数的重启(最多重试10次)

 
 

[总结部份]

更新中......

Master的注册机制和状态改变管理解密的更多相关文章

  1. [Spark内核] 第30课:Master的注册机制和状态管理解密

    本課主題 Master 接收 Worker, Driver, Application Master 处理 Driver 狀态变换 Master 处理 Executor 狀态变换 [引言部份:你希望读者 ...

  2. Spark系列(六)Master注册机制和状态改变机制

    各组件的注册流程如下图: 注册机制源码说明: 入口:org.apache.spark.deploy.master文件下的receiveWithLogging方法中的case RegisterAppli ...

  3. 小记--------spark的Master的Application注册机制源码分析及Master的注册机制原理分析

    原理图解: Master类位置所在:spark-core_2.11-2.1.0.jar的org.apache.spark.deploy.master下的Master类   //截取了部分代码 //处理 ...

  4. C#实现软件授权,限定MAC运行(软件license管理,简单软件注册机制)

    一个绿色免安装软件,领导临时要求加个注册机制,不能让现场工程师随意复制.事出突然,只能在现场开发(离开现场软件就不受我们控了).花了不到两个小时实现了简单的注册机制,稍作整理. 基本原理:1.软件一运 ...

  5. C#软件license管理(简单软件注册机制)

    最近做了一个绿色免安装软件,领导临时要求加个注册机制,不能让现场工程师随意复制.事出突然,只能在现场开发(离开现场软件就不受我们控了).花了不到两个小时实现了简单的注册机制,稍作整理.        ...

  6. DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能

    DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能 一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己 ...

  7. TensorFlow中的设备管理——Device的创建与注册机制

    背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 作为一款优秀的异构深度学习算法框架,TensorFlow可以在多种设备上运行算 ...

  8. iOS:使用代理模式监听开关状态改变事件

    记一次解决跨控制器监听开关状态改变的尝试. 为了统一设置UITableViewCell里的内容,自定义了UITableViewCell类的一个基类,命名为SettingCell.SettingCell ...

  9. Unity3.0基于约定的自动注册机制

    前文<Unity2.0容器自动注册机制>中,介绍了如何在 Unity 2.0 版本中使用 Auto Registration 自动注册机制.在 Unity 3.0 版本中(2013年),新 ...

随机推荐

  1. (转)bash条件判断之if语句

    http://blog.51cto.com/64314491/1629175---------bash条件判断之if语句(一) http://blog.51cto.com/64314491/16292 ...

  2. Jmeter断言实例—响应断言

    断言有很多种,最最最常用的一种就是响应断言,目前我用的最多是这一种,下面列举一个运用响应断言的实例 对相应的请求添加断言 **Main sample and sub-samples:断言应用于主采样器 ...

  3. 获取两个数之间的随机数-java

    start=25 end=30 (int)(Math.random()*(end-start)+start)

  4. JSONP原理及简单实现

    在web2.0时代,熟练的使用ajax是每个前端攻城师必备的技能.然而由于受到浏览器的限制,ajax不允许跨域通信. JSONP就是就是目前主流的实现跨域通信的解决方案. 虽然在在jquery中,我们 ...

  5. CSS box-flex属性,然后弹性盒子模型简介

    今天做项目的时候发现一个css3的新属性flex 一.什么是flex 它的作用是能够按照设置好的规则来排列容器内的项目,而不必去计算每一个项目的宽度和边距.甚至是在容器的大小发生改变的时候,都可以重新 ...

  6. spring中使用quartz时注入时出现的错误

    错误1: 配置文件: <!-- 任务执行器的线程池 --> <bean id="taskExecutor" class="org.springframe ...

  7. Magento 2中文手册教程 - 如何获得 Magento 2

    Magento 2 安装 我们搜集了一些信息来帮助您开始使用Magento 2和你的Magento 2安装. 我们有一些资源帮助您开始使用Magento 2. 如何获得 Magento 2 参考下表开 ...

  8. WPF 资源字典

    使用好处:存储需要被本地话的内容(错误消息字符串等,实现软编码),减少重复的代码,重用样式,实现多个项目之间的共享资源;修改一个地方所有引用的地方都会被修改,方便统一风格; 使用方法,归纳起来主要有下 ...

  9. 编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。

    编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义.必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neu ...

  10. RUP 4+1视图

    RUP开篇之作:http://www.ibm.com/developerworks/cn/rational/r-4p1-view/index.html 百科:http://baike.baidu.co ...