-
我从这里下载了apache spark docker镜像。
-
然后我发现
SPARK_NO_DAEMONIZE
应该设置为TRUE
——我通过使用以下命令"bash"进入Docker来做到这一点docker run -ti --name spark apache/spark:v3.3.0 bash export SPARK_NO_DAEMONIZE=true
-
然后我尝试启动spark-"/opt/spark/sbin/start-master.sh",然后得到错误
sh-5.1$ /opt/spark/sbin/start-master.sh mkdir: cannot create directory ‘/opt/spark/logs’: Permission denied chown: cannot access '/opt/spark/logs': No such file or directory starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark--org.apache.spark.deploy.master.Master-1- aaea1d8bfe7c.out Spark Command: /usr/local/openjdk-11/bin/java -cp /opt/spark/conf:/opt/spark/jars/* -Xmx1g org.apache.spark.deploy.master.Master --host aaea1d8bfe7c --port 7077 -- webui-port 8080
我从"Dockerfile"中了解到,用户"185"运行其中的所有内容。不幸的是,我还不知道如何在其中启用root用户,以便更改权限或创建日志目录。
有人能告诉我是否遗漏了什么吗?
p.s.我不想使用docker-compose.yml
运行spark,我想运行单个集群
您可以覆盖在容器内运行的用户:
docker run -ti --user 0 --name spark apache/spark:v3.3.0 bash
然后,您将在容器中扎根。
如果你想通过Dockerfile来实现,以下是步骤:
- 将Dockerfile创建为:
FROM apache/spark:v3.3.0
USER root
RUN mkdir -p /opt/spark/logs && chmod a+wr /opt/spark/logs
USER 185
ENV SPARK_NO_DAEMONIZE=true
CMD ["/opt/spark/sbin/start-master.sh"]
- 构建图像
docker build -t "testspark" .
- 运行容器
docker run -ti --rm testspark