Spark-2.4.0 docker build 失败

Posted

技术标签:

【中文标题】Spark-2.4.0 docker build 失败【英文标题】:Spark-2.4.0 docker build fails 【发布时间】:2019-01-30 18:31:39 【问题描述】:

我正在尝试构建一个基于 alpine linux 的 spark 容器(使用发行版中提供的 Dockerfile)。

docker build -t spark:latest -f kubernetes/dockerfiles/spark/Dockerfile .

我看到以下错误。我该如何解决这些问题?

Sending build context to Docker daemon  256.2MB
Step 1/15 : FROM openjdk:8-alpine
 ---> 2cfb1dc1f0c8
Step 2/15 : ARG spark_jars=jars
 ---> Using cache
 ---> 3929d9e6b4a3
Step 3/15 : ARG img_path=kubernetes/dockerfiles
 ---> Using cache
 ---> 74e046503051
Step 4/15 : ARG k8s_tests=kubernetes/tests
 ---> Using cache
 ---> b935956a4bd1
Step 5/15 : RUN set -ex &&     apk upgrade --no-cache &&     apk add --no-cache bash tini libc6-compat linux-pam &&     mkdir -p /opt/spark &&     mkdir -p /opt/spark/work-dir &&     touch /opt/spark/RELEASE &&     rm /bin/sh &&     ln -sv /bin/bash /bin/sh &&     echo "auth required pam_wheel.so use_uid" >> /etc/pam.d/su &&     chgrp root /etc/passwd && chmod ug+rw /etc/passwd
 ---> Running in 04372cfa8170
+ apk upgrade --no-cache
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
OK: 101 MiB in 53 packages
+ apk add --no-cache bash tini libc6-compat linux-pam
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
ERROR: unsatisfiable constraints:
  bash (missing):
    required by: world[bash]
  libc6-compat (missing):
    required by: world[libc6-compat]
  linux-pam (missing):
    required by: world[linux-pam]
  tini (missing):
    required by: world[tini]
The command '/bin/sh -c set -ex &&     apk upgrade --no-cache &&     apk add --no-cache bash tini libc6-compat linux-pam &&     mkdir -p /opt/spark &&     mkdir -p /opt/spark/work-dir &&     touch /opt/spark/RELEASE &&     rm /bin/sh &&     ln -sv /bin/bash /bin/sh &&     echo "auth required pam_wheel.so use_uid" >> /etc/pam.d/su &&     chgrp root /etc/passwd && chmod ug+rw /etc/passwd' returned a non-zero code: 4

【问题讨论】:

您似乎缺少一些库。尝试安装libc6-compat、linux-pam、tini @shtolik,你的意思是做一个 rpm 安装(或那些行中的东西?) 是的,rpm/apt 或 linux 上的任何一个 对我来说,您似乎必须先为 alpine 设置网络连接?因为它找不到存储库,而且我不熟悉 alpine,但我知道它非常基础。 我可以看看你的 Dockerfile 吗? 【参考方案1】:

如果您首先将您喜欢的 Linux(在您的情况下为 Alpine)作为普通容器运行,然后执行它,那对您会更好。

然后尝试在容器中一一运行您的构建命令,如果成功,则将其添加到您的 Dockerfile 中。

正如@wuerzelchen 提到的,不确定 Alpine 作为 Linux 发行版是否适合您。

【讨论】:

以上是关于Spark-2.4.0 docker build 失败的主要内容,如果未能解决你的问题,请参考以下文章

spark-2.4.0-hadoop2.7-安装部署

Spark 2.4 standalone 部署

Apache Spark 2.4.0、AWS EMR、Spark Redshift 和 User 类抛出异常:java.lang.AbstractMethodError

如何在 Spark 2.4.0 中使用 PySpark API 将表插入 Hive

CDH-6.3.2内置spark-2.4.0的BUG

Spark 2.4.0 Avro Java - 无法解析方法from_avro