我已将AWS Glue设置为输出Spark事件日志,以便可以将其导入Spark History Server。 AWS为此提供了CloudFormation stack,我只想在本地运行历史记录服务器并导入事件日志。我想为此使用Docker,以便同事可以轻松运行同一件事。
由于历史记录服务器是一个守护进程,所以我遇到了问题,因此容器启动后立即关闭。
如何使Docker映像保持活动状态?
我的Dockerfile如下
ARG SPARK_IMAGE=gcr.io/spark-operator/spark:v2.4.4
FROM ${SPARK_IMAGE}
RUN apk --update add coreutils
RUN mkdir /tmp/spark-events
ENTRYPOINT ["/opt/spark/sbin/start-history-server.sh"]
我使用以下方法启动它:
docker run -v ${PWD}/events:/tmp/spark-events -p 18080:18080 sparkhistoryserver
答案 0 :(得分:0)
您需要SPARK_NO_DAEMONIZE环境变量,请参见here。这样可以使容器保持活动状态。
只需按如下所示修改您的Dockerfile:
ARG SPARK_IMAGE=gcr.io/spark-operator/spark:v2.4.4
FROM ${SPARK_IMAGE}
RUN apk --update add coreutils
RUN mkdir /tmp/spark-events
ENV SPARK_NO_DAEMONIZE TRUE
ENTRYPOINT ["/opt/spark/sbin/start-history-server.sh"]
有关更详细的自述文件,请参见here。