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

  • 相关阅读:
    bzoj 2763: [JLOI2011]飞行路线
    2008年NOI全国竞赛 假面舞会
    八数码(双向宽搜)
    poj 1988 Cube Stacking && codevs 1540 银河英雄传说(加权并茶几)
    codevs 3693 数三角形
    bzoj 3831 Little Bird (单调队列优化dp)
    hdu 3530 Subsequence
    poj 2823 Sliding Window(单调队列)
    线段树各种小练习
    codevs 2449 骑士精神 (IDDfs)
  • 原文地址:https://www.cnblogs.com/students/p/12452480.html
Copyright © 2011-2022 走看看