运行 Docker 中的 Spark 历史服务器,用于查看 AWS Glue 作业

Running Spark history server in Docker to view AWS Glue jobs

我已经设置 AWS Glue 来输出 Spark 事件日志,以便可以将它们导入 Spark History Server。 AWS为此提供了CloudFormation stack,我只想运行本地历史服务器并导入事件日志。我想为此使用 Docker,以便同事可以轻松 运行 同样的事情。

我 运行 遇到了问题,因为历史服务器是一个守护进程,所以容器启动并立即关闭。

如何让 Docker 图片保持活动状态?

我的Docker文件如下

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

您需要 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