apache-spark - 如何在 Docker 上运行 Spark?

无法在 Docker 上运行 Apache Spark。

当我尝试从我的驱动程序与 spark master 通信时,我收到下一个错误:

15/04/03 13:08:28 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

最佳答案

这个错误听起来像是 worker 没有向主人注册。

这可以在大师的 Spark 网凳上查看 http://<masterip>:8080

您也可以简单地使用不同的 docker 镜像,或者将 docker 镜像与有效的镜像进行比较,看看有什么不同。

我已经将一个 spark master docker 化了。和 spark worker .

如果您有一台位于 NAT 路由器后面的 Linux 机器,例如家庭防火墙,它将私有(private) 192.168.1.* 网络中的地址分配给机器,此脚本将下载 spark 1.3.1 主服务器和工作程序到在地址分别为 192.168.1.10 和 .11 的单独 docker 容器中运行。如果您的 LAN 上已使用 192.168.1.10 和 192.168.1.11,您可能需要调整地址。

pipework是用于将 LAN 桥接到容器而不是使用内部 docker 桥的实用程序。

Spark 要求所有机器能够相互通信。据我所知,spark 不是分层的,我见过工作人员试图相互打开端口。因此,在 shell 脚本中,我公开了所有端口,如果机器有其他防火墙,例如在家庭 NAT 路由器后面,则可以。

./run-docker-spark

#!/bin/bash
sudo -v
MASTER=$(docker run --name="master" -h master --add-host master:192.168.1.10 --add-host spark1:192.168.1.11 --add-host spark2:192.168.1.12 --add-host spark3:192.168.1.13 --add-host spark4:192.168.1.14 --expose=1-65535 --env SPARK_MASTER_IP=192.168.1.10 -d drpaulbrewer/spark-master:latest)
sudo pipework eth0 $MASTER 192.168.1.10/24@192.168.1.1
SPARK1=$(docker run --name="spark1" -h spark1 --add-host home:192.168.1.8 --add-host master:192.168.1.10 --add-host spark1:192.168.1.11 --add-host spark2:192.168.1.12 --add-host spark3:192.168.1.13 --add-host spark4:192.168.1.14 --expose=1-65535 --env mem=10G --env master=spark://192.168.1.10:7077 -v /data:/data -v /tmp:/tmp -d drpaulbrewer/spark-worker:latest)
sudo pipework eth0 $SPARK1 192.168.1.11/24@192.168.1.1

运行此脚本后,我可以在 192.168.1.10:8080 看到主 Web 报告,或者转到我 LAN 上的另一台具有 spark 分布的机器,然后运行 ​​./spark-shell --master spark://192.168.1.10:7077它会弹出一个交互式 scala shell。

https://stackoverflow.com/questions/29432929/

相关文章:

docker - 是否可以使用 Winscp 连接到正在运行的 docker 容器?

docker - 如何使用 docker-compose yml 文件进行生产?

docker - 如何在 Docker 中将主机文件夹与容器文件夹合并?

java - 如何在Docker中初始化数据库后启动flyway

docker - s3fs 无法安装在 docker 容器内吗?

php - 在双 nginx 反向代理中正确处理 request_uri?

docker - 如何对接 ASP.NET Core 2.0 应用程序?

python - 如何将包含所有依赖项的 python 包安装到 Docker 镜像中?

macos - 在 docker 中运行 Webpack-dev-server 比在本地机器上运行要

docker - 失败 : port is already allocated