Spark集群某些worker无法停止的原因分析和解决

el/2024/5/23 0:35:30

今天想停止spark集群,发现执行stop-all.sh的时候spark的相关进程都无法停止。提示:

no org.apache.spark.deploy.master.Master to stop

no org.apache.spark.deploy.worker.Worker to stop

上网查了一些资料,再翻看了一下stop-all.sh,stop-master.sh,stop-slaves.sh,spark-daemon.sh,spark-daemons.sh等脚本,发现很有可能是由于$SPARK_PID_DIR的一个环境变量导致。

1. 原因分析

我搭建的是Hadoop2.6.0+Spark1.1.0+Yarn的集群。Spark、Hadoop和Yarn的停止,都是通过一些xxx.pid文件来操作的。以spark的stop-master为例,其中停止语句如下:

再查看spark-daemon.sh中的操作:

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

系统每隔一段时间就会清除/tmp目录下的内容。到/tmp下查看一下,果然没有相关进程的pid文件了。这才导致了stop-all.sh无法停止集群。

2. 停止Spark集群

担心使用kill强制停止spark相关进程会破坏集群,因此考虑回复/tmp下的pid文件,再使用stop-all.sh来停止集群。

分析spark-daemon.sh脚本,看到pid文件命名规则如下:

pid=$SPARK_PID_DIR/spark-$SPARK_IDENT_STRING-$command-$instance.pid

其中

$SPARK_PID_DIR是/tmp

$SPARK_IDENT_STRING是登录用户$USER,我的集群中用户名是cdahdp

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

org.apache.spark.deploy.master.Master

org.apache.spark.deploy.worker.Worker

$instance也是调用spark-daemon.sh时的参数,我的集群中是1

因此pid文件名如下:

/tmp/spark-cdahdp-org.apache.spark.deploy.master.Master-1.pid

/tmp/spark-cdahdp-org.apache.spark.deploy.worker.Worker-1.pid

通过jps查看相关进程的pid:

将pid保存到对应的pid文件即可。

之后调用spark的stop-all.sh,即可正常停止spark集群。

3. 停止Hadoop和Yarn集群

停止hadoop和yarn集群时,调用stop-all.sh,也会出现这个现象。其中NameNode,SecondaryNameNode,DataNode,NodeManager,ResourceManager等就是hadoop和yarn的相关进程,stop时由于找不到pid导致无法停止。分析方法同spark,对应pid文件名不同而已。

Hadoop的pid命名规则:

pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid

pid文件名:

/tmp/hadoop-cdahdp-namenode.pid

/tmp/hadoop-cdahdp-secondarynamenode.pid

/tmp/hadoop-cdahdp-datanode.pid

Yarn的pid命名规则:

pid=$YARN_PID_DIR/yarn-$YANR_IDENT_STRING-$command.pid

pid文件名:

/tmp/yarn-cdahdp-resourcemanager.pid

/tmp/yarn-cdahdp-nodemanager.pid

恢复这些pid文件即可使用stop-all.sh停止hadoop和yarn进程。

4. 根治方案

要根治这个问题,只需要在集群所有节点都设置$SPARK_PID_DIR, $HADOOP_PID_DIR和$YARN_PID_DIR即可。

注意:创建pids存储目录即可,pids有程序自动创建删除等维护。

修改hadoop-env.sh,增加:

export HADOOP_PID_DIR=/home/ap/cdahdp/app/

修改yarn-env.sh,增加:

export YARN_PID_DIR=/home/ap/cdahdp/app/

修改spark-env.sh,增加:

export SPARK_PID_DIR=/home/ap/cdahdp/app/

启动集群以后,查看/home/ap/cdahdp/app/pids目录,如下:


http://www.ngui.cc/el/4994255.html

相关文章

CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

---恢复内容开始--- CentOS 6.6 升级GCC G (当前最新GCC/G版本为v6.1.0) 没有便捷方式, yum update.... yum install 或者 添加yum 的 repo 文件 也不行, 只能更新到 4.4.7! then, 只能手动编译安装了,那么开始第一步下载源代码吧,GO! 1、 获取安装包并解压 wget ht…

java.lang.RuntimeException: java.lang.RuntimeException: org.apache.zookeeper.KeeperException$NoNodeE

写了一个storm集成kfaka的程序,kafkaSpout消费的数据作为storm的数据源。运行报错如下: java.lang.RuntimeException: java.lang.RuntimeException: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode NoNode for /brokers/topi…

PR曲线,ROC曲线,AUC指标等,Accuracy vs Precision

混淆矩阵(Confusion Matrix): PR Precision-Recall曲线,这个东西应该是来源于信息检索中对相关性的评价吧,precision就是你检索出来的结果中,相关的比率;recall就是你检索出来的结果中&#xff…

CDH5 某机器节点每个角色都提示:此角色的主机的运行状况为存在隐患。 以下运行状况测试存在隐患 网络接口速度. 看看是不是网络问题

CDH5 某机器节点每个角色都提示:此角色的主机的运行状况为存在隐患。 以下运行状况测试存在隐患 网络接口速度. 看看是不是网络问题 问题解决: 1、查找不是网络及网卡问题; 2、查看防火前状态(OS:RHEL7.3) 发现防火墙是开着的 #systemctl status firewalld ● firew…

Keras 更新指令

Keras 更新指令 pip install gitgit://github.com/fchollet/keras.git --upgrade --no-deps

HUE middleware INFO Processing exception: StandbyException: Operation category RAD is not supported

HUE middleware INFO Processing exception: StandbyException: Operation category RAD is not supported 原因是:HDFS高可用(HA)活动节点变了,而HUE HDFS Web url没有变,导致HUE HDFS Web url用的是NameNode节点是…

HIve 使用MapReduce查询计算引擎,输出结果汉字显示乱码

HIve 使用MapReduce查询计算引擎,输出结果汉字显示乱码 在配置MultiDelimitSerDe后,建立hive多分隔符表,select * from tab1 正常显示汉字;但是select s2,substr(s2,3) from db_mul.multi_delimiter_test 通过MR 引擎处理后&…

萌萌哒的MYSQL

萌萌哒的MYSQL 说好的萌萌哒哪!说好的很好学哪!学长说了,有问题别来问我找百度。啊啊啊啊!!!!在经过无数次阅览百度网页之后,我总结了几段代码,希望MYSQL以后能对我和大…

各种函数啊啊啊啊啊!!!

放假了啊啊啊!!!解放了!!!可以刷题了啊啊啊啊!!! 不过宝宝是个小白,接触acm这么多年还是只能刷水题。呜呜呜呜~~~~~~ 各种萌萌哒的函数已经上线&#xff0c…

杭电acm水题2053

刷题啊啊啊啊啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;>_< 题目网址&#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid2053 题目说有一串灯&#xff0c;开始的时候灯都是关闭状态&#xff0c;为0.如果是循环i的倍数&#xff0c;那么…