具有Apache Spark的Docker容器,处于独立群集模式

我正在尝试构build一个包含Apache Spark的Docker镜像。 IT基于openjdk-8-jre官方图像。

目标是在集群模式下执行Spark,因此至less有一个主sbin/start-slave.sh (通过sbin/start-master.sh启动)和一个或多个从sbin/start-slave.shsbin/start-slave.sh )。 查看我的Dockerfile和入口点脚本的spark-standalone- docker。

构build本身实际上是经过的,问题是当我想运行容器时,它很快就会启动并停止。 原因是Spark主启动脚本以守护进程模式启动主服务器并退出。 因此,容器终止,因为没有进程在前台运行了。

显而易见的解决scheme是在前台运行Spark主进程,但我无法弄清楚(Google也没有发现任何东西)。 我的“解决方法 – 解决scheme”是在Spark日志目录上运行tails -f

因此,我的问题是:

  1. 你如何在前台运行Apache Spark Master?
  2. 如果第一个是不可能的/可行的/无论如何,保持容器“活着”(我真的不想使用无限循环和睡眠命令)的首选(即最佳实践)解决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-inittini