zoukankan      html  css  js  c++  java
  • 解决Spark集群无法停止

    执行stop-all.sh时,出现报错:no org.apache.spark.deploy.master.Master to stop,no org.apache.spark.deploy.worker.Worker to stop

    原因:

    Spark的停止,是通过一些.pid文件来操作的。

    查看spark-daemon.sh文件,其中一行:$SPARK_PID_DIR  The pid files are strored .  /tmp by default .

    $SPARK_PID_DIR存放的pid文件中,就是要停止的进程的pid,其中$SPARK_PID_DIR默认是在系统的/tmp目录。

    系统每隔一段时间就会清除/tmp目录下的内容。到/tmp下查看,如果没有Spark相关.pid文件,这就是导致Spark集群无法停止的原因。

    解决:

    查看spark-daemon.sh文件中.pid文件命名规则,其中一行:pid=$SPARK_PID_DIR/spark-$SPARK_IDENT_STRING-$command-$instance.pid

    其中

    $SPARK_PID_DIR是/tmp

    $SPARK_IDENT_STRING是登录用户$USER,我的用户名是root

    $command是调用spark-daemon.sh时的参数,有两个:

    org.apache.spark.deploy.master.Master

    org.apache.spark.deploy.worker.Worker

    $instance也是调用spark-daemon.sh时的参数

    因此pid文件名如下:

    spark-cdahdp-org.apache.spark.deploy.master.Master-1.pid(在master机器中/tmp下创建)

    spark-cdahdp-org.apache.spark.deploy.worker.Worker-1.pid(在每一台worker机器中/tmp下创建,如果一台机器开启了多个worker,就创建多个.pid文件,文件名最后的数字依次递增)

    通过jps查看所有机器相关进程(master、worker)的pid数字。编辑所有.pid文件,把pid数字一一对应写入.pid文件,最后每个.pid文件中都是一个进程号。

    然后执行spark的stop-all.sh,即可正常停止spark集群。

    彻底解决:

    在集群所有节点编辑spark-env.sh,增加一行:export SPARK_PID_DIR=/home/ap/root/app/pids

    删除之前自己创建的所有.pid文件。

    然后可以启动spark集群了。

  • 相关阅读:
    我从Linux走来,选择了Windows
    静态路由(三路由)
    设置跨交换机VLAN
    服务器只能被动接受
    理解 atime,ctime,mtime (下)
    理解 atime,ctime,mtime (上)
    visualvm连接服务器jvm进行监控
    mysql 日期函数格式
    关于springmvc跨域
    Javassist初体验
  • 原文地址:https://www.cnblogs.com/zhangtianyuan/p/8309540.html
Copyright © 2011-2022 走看看