我们有一个通过主管启动的 Spark 集群。摘录:
/etc/supervisor/conf.d/spark_master.conf:
command=./sbin/start-master.sh
directory=/opt/spark-1.4.1
/etc/supervisor/conf.d/spark_worker.conf:
command=./sbin/start-slave.sh spark://spark-master:7077
directory=/opt/spark-1.4.1
主管面临的挑战是这些脚本启动一个守护进程并分离,主管希望事情在前台运行而无需分叉。到目前为止,我说服主管分叉是可以的或说服 Spark 不要分叉的努力都没有成功。有人找到更好的方法吗?谢谢!
答案1
我推断的解决方案文档的先前版本:
/etc/supervisor/conf.d/spark_master.conf:
command=/opt/spark-1.4.1/bin/spark-class org.apache.spark.deploy.master.Master
directory=/opt/spark-1.4.1
/etc/supervisor/conf.d/spark_worker.conf:
command=/opt/spark-1.4.1/bin/spark-class org.apache.spark.deploy.worker.Worker spark://spark-master:7077
directory=/opt/spark-1.4.1
通过bin/spark-class
命令启动会保留在前台,并且不会延续“从属”术语,这会带来额外的满足感。
答案2
从 Spark 2.1 开始(以及这次提交)可以设置环境变量并让主管直接SPARK_NO_DAEMONIZE
调用提供的启动脚本。$SPARK_HOME/sbin/start-master.sh
$SPARK_HOME/sbin/start-slave.sh
这记录在$SPARK_HOME/conf/spark-env.sh.template
和$SPARK_HOME/sbin/spark-daemon.sh