Ten błąd wygląda na to, że pracownicy nie zarejestrowali się w systemie głównym.
Można to sprawdzić w pana zapłonowej internetowej stolcu http://<masterip>:8080
Można też po prostu użyć innego Döcker obraz lub porównać obrazy Döcker z jednym, który działa i zobaczyć, co jest inne.
Udostępniłem dockerized spark master i spark worker.
Jeśli masz maszynę Linux siedzącą za routerem NAT, taką jak domowa zapora sieciowa, która przydziela adresy w prywatnej sieci 192.168.1. * Do komputerów, ten skrypt pobierze iskrę 1.3.1 master i robotę uruchamiać w osobnych kontenerach doków o adresach odpowiednio 192.168.1.10 i .11. Konieczne może być dostrojenie adresów, jeśli 192.168.1.10 i 192.168.1.11 są już używane w sieci LAN.
pipework to narzędzie do mostkowania sieci LAN do kontenera zamiast korzystania z wewnętrznego mostka dokowanego.
Spark wymaga, aby wszystkie urządzenia były w stanie komunikować się ze sobą. O ile wiem, iskra nie jest hierarchiczna, widziałem, jak robotnicy próbowali otwierać sobie nawzajem porty. Tak więc w skrypcie powłoki ujawniam wszystkie porty, co jest ok, jeśli maszyny są inaczej zaporą ogniową, na przykład za domowym routerem 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/[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]
Po uruchomieniu tego skryptu widzę internetowej raport mistrzem 192.168.1.10:8080, lub udać się do innego komputera w mojej sieci, która ma rozkład zapłonową, i uruchom ./spark-shell --master spark://192.168.1.10:7077
i wyświetli interaktywną powłokę scala.
Miałem ten sam problem, gdy próbowałem uruchomić Spark Job Server w Dockerze. Problem polega na tym, że Spark wykorzystuje losowe porty do komunikacji między mistrzem, robotnikiem i kierowcą. Docker jest systemem zamkniętym według projektu i musisz ujawnić określone porty poprzez EXPOSE. Kiedy Spark nie może się komunikować, pojawia się ten błąd. –