Spark Master失败后会发生什么?

时间:2016-03-05 14:38:48

标签: apache-spark apache-spark-standalone

驱动程序是否需要持续访问主节点?或者只是它  获得初始资源分配需要?如果主人是,会发生什么 创建Spark上下文后不可用?这是否意味着申请失败?

3 个答案:

答案 0 :(得分:13)

主要故障或网络分区导致的第一个也可能是最严重的是您的群集无法接受新的应用程序。这就是当群集与默认配置一起使用时,Master被认为是单点故障的原因。

正在运行的应用程序将确认主要丢失,但除非两个重要的例外,否则这些应该继续或多或少地起作用:

  • 应用程序将无法正常完成
  • 如果master关闭,或者网络分区也影响工作节点,则slave将尝试reregisterWithMaster。如果这个fails multiple times工作人员只是give up。此时长时间运行的应用程序(如流媒体应用程序)将无法继续处理,但仍不应导致立即失败。相反,应用程序将等待主服务器重新联机(文件系统恢复)或来自新领导者的联系人(Zookeeper模式),如果发生这种情况,它将继续处理。

答案 1 :(得分:4)

下面是spark应用程序启动时的步骤,

  1. 启动Spark驱动程序
  2. Spark Driver,连接到spark master进行资源分配。
  3. Spark Driver,将附加在spark上下文中的jar发送给主服务器。
  4. Spark Driver,保持轮询主服务器以获取作业状态。
  5. 如果代码中存在混洗或广播,则数据通过火花驱动程序进行路由。这就是为什么火花驱动器需要足够的内存。
  6. 如果有任何操作,如take,takeOrdered或collect,则数据在驱动程序上累积。
  7. 所以,是的,在master上失败会导致执行者无法与之通信。所以,他们将停止工作。 主人失败将使司机无法与其进行通信以获得工作状态。 因此,您的应用程序将失败。

答案 2 :(得分:3)

是的,驱动程序和主服务器在SparkContext的生命周期内不断进行通信。这允许司机:

  • 在其Web Interface和REST API上显示作业/阶段/任务的详细状态
  • 聆听工作开始和结束事件(您可以添加自己的聆听者)
  • 等待作业结束(通过同步API - 例如rdd.count()在作业完成之前不会终止)并获得结果

驱动程序和主服务器之间的断开连接将使作业失败。