具有Apache Spark的Docker容器,处于独立群集模式
我正在尝试构build一个包含Apache Spark的Docker镜像。 IT基于openjdk-8-jre官方图像。
目标是在集群模式下执行Spark,因此至less有一个主sbin/start-slave.sh
(通过sbin/start-master.sh
启动)和一个或多个从sbin/start-slave.sh
( sbin/start-slave.sh
)。 查看我的Dockerfile和入口点脚本的spark-standalone- docker。
构build本身实际上是经过的,问题是当我想运行容器时,它很快就会启动并停止。 原因是Spark主启动脚本以守护进程模式启动主服务器并退出。 因此,容器终止,因为没有进程在前台运行了。
显而易见的解决scheme是在前台运行Spark主进程,但我无法弄清楚(Google也没有发现任何东西)。 我的“解决方法 – 解决scheme”是在Spark日志目录上运行tails -f
。
因此,我的问题是:
- 你如何在前台运行Apache Spark Master?
- 如果第一个是不可能的/可行的/无论如何,保持容器“活着”(我真的不想使用无限循环和睡眠命令)的首选(即最佳实践)解决scheme是什么?
你如何在前台运行Apache Spark Master?
Master
可以使用spark-class
。
bin/spark-class org.apache.spark.deploy.master.Master
对于工人来说也是一样的
bin/spark-class org.apache.spark.deploy.worker.Worker $MASTER_URL
如果你正在寻找生产就绪的解决scheme,你应该考虑使用像dumb-init
或tini
。