Lỗi này có vẻ như công nhân chưa đăng ký với chủ.
này có thể được kiểm tra tại spark web phân thạc sĩ http://<masterip>:8080
Bạn cũng có thể chỉ cần sử dụng một hình ảnh Docker khác nhau, hoặc so sánh hình ảnh Docker với một trong những hoạt và xem những gì là khác nhau.
Tôi đã cập nhật một số spark master và spark worker.
Nếu bạn có máy Linux ngồi phía sau bộ định tuyến NAT, như tường lửa gia đình, phân bổ địa chỉ trong mạng riêng tư 192.168.1. * Cho mạng, tập lệnh này sẽ tải xuống bản 1.3.1 tổng thể và công nhân để chạy trong các thùng chứa docker riêng biệt với địa chỉ 192.168.1.10 và .11 tương ứng. Bạn có thể cần phải tinh chỉnh các địa chỉ nếu 192.168.1.10 và 192.168.1.11 đã được sử dụng trên mạng LAN của bạn.
pipework là tiện ích để bắc cầu mạng LAN vào vùng chứa thay vì sử dụng cầu docker bên trong.
Spark yêu cầu tất cả các máy có thể giao tiếp với nhau. Theo như tôi có thể nói, tia lửa không phải là phân cấp, tôi đã thấy các công nhân cố gắng mở các cổng với nhau. Vì vậy, trong kịch bản shell tôi trưng ra tất cả các cổng, đó là OK nếu các máy tính được tường lửa, chẳng hạn như phía sau một bộ định tuyến NAT nhà.
./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]
Sau khi chạy kịch bản này, tôi có thể xem báo cáo web thạc sĩ tại 192.168.1.10:8080 hoặc truy cập vào máy tính khác trên mạng LAN của tôi mà có một phân phối tia lửa, và chạy ./spark-shell --master spark://192.168.1.10:7077
và nó sẽ mang lại một vỏ scala tương tác.
Tôi gặp vấn đề tương tự khi cố gắng chạy Spark Job Server bên trong Docker. Vấn đề ở đây là, Spark sử dụng các cổng ngẫu nhiên để giao tiếp giữa chủ, nhân viên và người lái xe. Docker là một hệ thống khép kín bởi thiết kế và bạn cần để lộ các cổng cụ thể thông qua EXPOSE. Khi Spark không thể giao tiếp, lỗi này xảy ra. –