Apache Spark容器启动错误-Docker


  1. 我从这里下载了apache spark docker镜像。

  2. 然后我发现SPARK_NO_DAEMONIZE应该设置为TRUE——我通过使用以下命令"bash"进入Docker来做到这一点

    docker run -ti --name spark apache/spark:v3.3.0 bash
    export SPARK_NO_DAEMONIZE=true
    
  3. 然后我尝试启动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来实现,以下是步骤:

  1. 将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"]
  1. 构建图像
docker build -t "testspark" .
  1. 运行容器
docker run -ti --rm testspark

最新更新