美文网首页
Standalone模式下集群的启动和停止

Standalone模式下集群的启动和停止

作者: 焉知非鱼 | 来源:发表于2017-06-12 10:45 被阅读159次

    以下所有操作都是在 Master 上。

    1. 停掉所有的 spark crontab 任务

    stop crontab

    sudo rm /etc/cron.d/crontab_ald_spark
    
    1. 杀掉所有的正在运行的 spark 进程
      kill spark progress
    ps aux | grep 'spark' | awk '{print $2}' | xargs kill -9
    
    1. 杀掉 Master(10.0.0.247)
      stop-master.sh
    spark/sbin/stop-master.sh -h 10.0.0.247 -p 7077
    
    1. 停掉所有的 slaves
      stop-slaves.sh
    spark/sbin/stop-slaves.sh -h 10.0.0.247 -p 7077
    

    停掉 slaves, 注意是 s, 需要先做 Master 到各 slave 的免密码登陆, 即把 Master 下的 ~/.ssh/id_rsa.pub 中的公钥复制到各 slave 下(用sudo su切换到root)的 ~/.ssh/authorized_keys 中。

    在 Master 下的 /etc/hosts 文件中, 加上各 slave 的主机名:

    127.0.0.1  localhost  localhost.localdomain  VM-0-247-ubuntu
    10.0.0.51  VM-0-51-ubuntu
    10.0.0.71  VM-0-71-ubuntu
    10.0.0.134 VM-0-134-ubuntu
    

    然后手动登陆各个 slave:

    ssh VM-0-51-ubuntu
    ssh VM-0-71-ubuntu
    ssh VM-0-134-ubuntu
    

    第一次免密码登陆会让你输入 YES 来确认, 以后就不用输入了。


    集群的启动:

    启动 master:

    spark/sbin/start-master.sh -h 10.0.0.247 -p 7077
    

    启动 slaves:

    spark/sbin/start-slaves.sh -h 10.0.0.247 -p 7077
    

    启动 slaves 后, 在 web ui 界面并没有发现 Alive 的 slaves, 登陆到 slave 查看:

    ps aux | grep 'Worker'
    

    发现:

     /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -cp /data/app/ald_spark/spark/conf/:/data/app/ald_spark/spark/jars/* -Xmx2g -XX:MaxPermSize=256m org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://localhost:7077
    

    发现 Worker 连接 localhost 作为 Master 了。vim spark/sbin/start-slaves.sh 看到:

    if [ "$SPARK_MASTER_HOST" = "" ]; then
      case `uname` in
          (SunOS)
              SPARK_MASTER_HOST="`/usr/sbin/check-hostname | awk '{print $NF}'`"
              ;;
          (*)
              SPARK_MASTER_HOST="`hostname -f`"
              ;;
      esac
    fi
    

    我们是 ubuntu 系统, 运行 hostname -f 得到 localhost, 所以 slave 自然连接到的也是 localhost。

    有几种解决办法:
    a) 直接在上面的代码中把 SPARK_MASTER_HOST 改为 10.0.0.247
    b) 在 ~/.bashrc~/.profile 文件中加入 SPARK_MASTER_HOST 变量

    export SPARK_MASTER_HOST=10.0.0.247
    

    c) 自己在 spark 同级目录下创建一个 start-slaves.sh 文件, 文件中的内容如下:

    #!/bin/bash
    . ./conf.sh
    spark/sbin/start-slaves.sh spark://$MASTER_HOST:7077
    

    其中 conf.sh 的内容如下:

    MASTER_HOST=10.0.0.247
    
    if [ "$ALD_ENV"x = "test"x ]; then
        MASTER_HOST=127.0.0.1;
    fi
    
    echo "MASTER_HOST=$MASTER_HOST"
    

    然后运行 ./start-slaves.sh 即可。

    Standalone 模式下任务是 FIFO, first in, first out, 正在运行的任务会尽可能的使用所有可用资源(cpu/内存), 后面的任务需要等到前面的任务执行完才开始, 如果任务过于密集, 会造成排队现象, 某些任务会 Waitng

    相关文章

      网友评论

          本文标题:Standalone模式下集群的启动和停止

          本文链接:https://www.haomeiwen.com/subject/ypflqxtx.html