Nin*_*ova 10 docker apache-spark
无法在Docker上运行Apache Spark.
当我尝试从我的驱动程序通信到spark master时,我收到下一个错误:
15/04/03 13:08:28 WARN TaskSchedulerImpl:初始工作没有接受任何资源; 检查群集UI以确保工作人员已注册并具有足够的资源
这个错误听起来像工人没有向主人注册.
这可以在主人的火花网凳上检查 http://<masterip>:8080
您也可以简单地使用不同的泊坞窗图像,或将泊坞窗图像与工作图像进行比较,看看有什么不同.
如果您有一台位于NAT路由器后面的Linux计算机,如家庭防火墙,它将私有192.168.1.*网络中的地址分配给计算机,则此脚本将下载一个spark 1.3.1 master和一个单独运行的worker docker容器,地址分别为192.168.1.10和.11.如果您的LAN上已经使用了192.168.1.10和192.168.1.11,则可能需要调整地址.
pipework是一种用于将LAN桥接到容器而不是使用内部docker桥的实用程序.
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
Run Code Online (Sandbox Code Playgroud)
运行此脚本后,我可以在192.168.1.10:8080看到主Web报告,或者转到我的局域网上另一台具有spark分布的计算机,然后运行./spark-shell --master spark://192.168.1.10:7077它将显示一个交互式scala shell.
其次是 docker 案例的更常见原因。你应该检查一下,你
如果不处理所有 3 个问题,spark 集群部件(master、worker、driver)将无法通信。您可以仔细阅读http://sometechshit.blogspot.ru/2015/04/running-spark-standalone-cluster-in.html上的每个问题,或者使用来自 https://registry.hub.docker 的 Spark 容器。 com/u/epahomov/docker-spark/
如果资源出现问题,请尝试使用https://spark.apache.org/docs/latest/configuration.html中的标志分配更少的资源(执行程序数量、内存、核心)。检查 Spark Master UI 页面有多少资源,默认为http://localhost:8080 。
| 归档时间: |
|
| 查看次数: |
11707 次 |
| 最近记录: |