zoukankan      html  css  js  c++  java
  • spark基于zookeeper的高可用异常启动分析

    1、背景:

    spark采用了stand alone模式,其中master基于zookeeper部署了高可用;

    zookeeper维护了当前的active master信息,以及所属worker信息

    worker和active  master进行通信

    而spark的启动脚本SPARK_HOME/sbin/start-all.sh脚本里,默认会将启动的worker与本机启动的master进行通信.

    2、正确操作:

    高可用的spark集群重新启动时:

    先杀死standby master,然后在master节点依次执行stop-all.sh  start-all.sh  最后登陆standby master节点,启动;

    3、异常分析:

    如果没有杀死standby  master,直接在active master节点执行了stop-all.sh  start-all.sh会发生什么问题呢?

    实验一:

    高可用spark集群启动:此时,worker与g3-test-26的master进行通信。(worker默认与本机启动的master进行通信)

    g3-test-26: start-all.sh           (active master)
    g3-test-27: start-master.sh (standby. master)

    异常关闭集群:

    g3-test-26上执行命令:
    g3-test-26:/opt/cslc/spark-2.4.5-bin-hadoop2.7/sbin/stop-all.sh
    g3-test-26:/opt/cslc/spark-2.4.5-bin-hadoop2.7/sbin/start-all.sh
    此时,g3-test-27变成active  master(zookeeper记录这个active master的所有worker均为head状态)

    新启动的g3-test-26为standby master,而启动的worker在和standby master 进行通信,无法在zk进行注册,结果g3-test-27:8080上显示无worker,g3-test-26上显示无worker,并且任务无法正常运行。

    解决办法1:先杀死当前standby master,然后在active master节点执行重启操作,最后再启动standby master

    解决办法2:停止所有进程,清理zookeeper里面spark的元数据,然后先start-all.sh启动,然后切换到另一个节点启动standby master

     4、worker单独启动:

    先查找active  master节点:

    可以在对应master的web ui 查看
    例如:
    http://104.21.51.77:8080
    
    可以在zookeeper的客户端查看:
    get  /spark/master_status

    然后登陆worker节点,执行

    ${SPARK_HOME}/sbin/start-slave.sh  spark://104.21.51.76:7077

    或者登陆active master节点,执行

    ${SPARK_HOME}/sbin/start-slaves.sh

  • 相关阅读:
    网站访问量和服务器带宽的选择
    PHP实现四种基本排序算法
    常用的PHP排序算法以及应用场景
    常见的mysql数据库sql语句的编写和运行结果
    MyBatis拦截器:给参数对象属性赋值
    《自律让你自由》摘要
    Java JDK1.5、1.6、1.7新特性整理(转)
    人人都能做产品经理吗?
    Windows下查询进程、端口
    一语收录(2016-09-18)
  • 原文地址:https://www.cnblogs.com/students/p/12452480.html
Copyright © 2011-2022 走看看