本課主題

  • 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 如果决定接收注册的工人,首先会创建 WorkerInfo 对象来保存注册的 Worker 的信息:然后调用 registerWorker 来执行具体的注册的过程,如果 Worker 状态是 DEAD 的状态则直接过滤掉,对于 UNKNOWN 状态的内容会调用 removeWorker 方法来进行清理(包括清理该工人下的 Executors 和驱动程序。
  6. 注册的时候会先注册 Driver 然后再注册 Application

Master 处理 Driver 狀态变换

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

Master 处理 Executor 狀态变换

  • 首先是查询一次有没有这个 Executor 注册的信息,
  • Executor 掛掉的時候系統會進行一定次數的重啟(最多重試10次)

 
 

[总结部份]

更新中......

參考資料

资料来源来至 DT大数据梦工厂 大数据传奇行动 第30课:Master的注册机制和状态管理解密

Spark源码图片取自于 Spark 1.6.0版本

[Spark内核] 第30课:Master的注册机制和状态管理解密的更多相关文章

  1. [Spark内核] 第37课:Task执行内幕与结果处理解密

    本课主题 Task执行内幕与结果处理解密 引言 这一章我们主要关心的是 Task 是怎样被计算的以及结果是怎么被处理的 了解 Task 是怎样被计算的以及结果是怎么被处理的 Task 执行原理流程图 ...

  2. Master的注册机制和状态改变管理解密

    本课主题 Master 接收 Worker, Driver, Application 注册 Master 处理 Driver 狀态变换 Master 处理 Executor 狀态变换 Master 接 ...

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

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

  4. [Spark内核] 第33课:Spark Executor内幕彻底解密:Executor工作原理图、ExecutorBackend注册源码解密、Executor实例化内幕、Executor具体工作内幕

    本課主題 Spark Executor 工作原理图 ExecutorBackend 注册源码鉴赏和 Executor 实例化内幕 Executor 具体是如何工作的 [引言部份:你希望读者看完这篇博客 ...

  5. [Spark内核] 第29课:Master HA彻底解密

    本课主题 Master HA 解析 Master HA 解析源码分享 [引言部份:你希望读者看完这篇博客后有那些启发.学到什么样的知识点] 更新中...... Master HA 解析 生产环境下一般 ...

  6. [Spark内核] 第28课:Spark天堂之门解密

    本課主題 什么是 Spark 的天堂之门 Spark 天堂之门到底在那里 Spark 天堂之门源码鉴赏 引言 我说的 Spark 天堂之门就是SparkContext,这篇文章会从 SparkCont ...

  7. [Spark内核] 第32课:Spark Worker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等

    本課主題 Spark Worker 原理 Worker 启动 Driver 源码鉴赏 Worker 启动 Executor 源码鉴赏 Worker 与 Master 的交互关系 [引言部份:你希望读者 ...

  8. [Spark内核] 第31课:Spark资源调度分配内幕天机彻底解密:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度内幕总结

    本課主題 Master 资源调度的源码鉴赏 [引言部份:你希望读者看完这篇博客后有那些启发.学到什么样的知识点] 更新中...... 资源调度管理 任务调度与资源是通过 DAGScheduler.Ta ...

  9. [Spark内核] 第35课:打通 Spark 系统运行内幕机制循环流程

    本课主题 打通 Spark 系统运行内幕机制循环流程 引言 通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是從后往前划分的,执行的时候是從前往后执行的,每 ...

随机推荐

  1. PHP之外观模式

    外观(Facade)模式 当使用子系统的代码时,你也许会发现自己过于深入地调用子系统的逻辑代码.如果子系统代码总是在不断变化,而你的代码却又在许多不同地方与子系统代码交互,那么随着子系统的发展,你也许 ...

  2. 《github一天一道算法题》:并归排序

    看书.思考.写代码! /******************************************* * copyright@hustyangju * blog: http://blog.c ...

  3. LINUX6安装Oracle10g无法启动安装界面解决

    ***********************************************声明*************************************************** ...

  4. 在linux上手动搭建svn服务器

    svn服务器的搭建 环境: linux CentOS 7 安装: 1.安装svn服务器 yum install subversion 2.查看版本 svnserve --version 3.创建版本库 ...

  5. tcpdump抓包和scp导出以及wireshark查看

    [命令和工具] tcpdump scp wireshark  (1)tcpdump sudo tcpdump -i eth0 -w /home/tcpdump/1.pcap host 10.214.1 ...

  6. Eclipse Maven构建WebApp项目资源目录显示不全的原因与解决方式

    一.问题展示 1.Eclipse在使用Maven构建WebApp项目的时候,首先Maven的安装和配置都没有问题的,但是构建项目之后,Maven项目要求的几个必须要有的资源目录显示不了: 问题如下图: ...

  7. order by按照指定记录排序

    //按照id降序 并把name是小黑的排在最后SELECT * from dms_student order by name not like '小黑' desc,id desc; //按照id降序 ...

  8. 【python】函数说明文档

  9. 基于CDH 5.9.1 搭建 Hive on Spark 及相关配置和调优

    Hive默认使用的计算框架是MapReduce,在我们使用Hive的时候通过写SQL语句,Hive会自动将SQL语句转化成MapReduce作业去执行,但是MapReduce的执行速度远差与Spark ...

  10. HTML列表的常用属性及其应用

    首先列表分成有序和无序分别是<ol><ul>,无序的比较简单,看个例子: <html> <body> <h4>一个无序列表:</h4& ...