无法在 Docker 上运行 Apache Spark。
当我尝试从驱动程序与 Spark Master 进行通信时,我收到下一个错误:
15/04/03 13:08:28 警告 TaskSchedulerImpl:初始作业尚未接受
任何资源;检查您的集群 UI 以确保工作人员
已注册并拥有足够的资源
这个错误听起来像是工人没有向主人注册。
这个可以去大师的spark web凳子上查一下http://<masterip>:8080
您还可以简单地使用不同的 docker 镜像,或者将 docker 镜像与有效的镜像进行比较,看看有什么不同。
我已经docker化了一个火花大师 and 火花工人.
如果您有一台 Linux 机器位于 NAT 路由器后面(例如家庭防火墙),它将私有 192.168.1.* 网络中的地址分配给机器,则此脚本将下载 Spark 1.3.1 主节点和工作节点以分别运行docker 容器的地址分别为 192.168.1.10 和 .11。如果您的 LAN 上已使用 192.168.1.10 和 192.168.1.11,您可能需要调整地址。
pipework是一个用于将 LAN 桥接到容器的实用程序,而不是使用内部 docker 桥。
Spark 要求所有机器能够相互通信。据我所知,spark 不是分层的,我见过工作人员尝试互相打开端口。因此,在 shell 脚本中,我公开了所有端口,如果机器有防火墙(例如在家庭 NAT 路由器后面),则这是可以的。
./运行-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/[email protected]
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/[email protected]
运行此脚本后,我可以在 192.168.1.10:8080 看到主 Web 报告,或者转到 LAN 上具有 Spark 发行版的另一台计算机,然后运行./spark-shell --master spark://192.168.1.10:7077
它将弹出一个交互式 scala shell。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)