Spark Master słucha na kilku portach. Niestety, zastosowany schemat adresu IP/nazwy hosta różni się między nimi - i często się zdarza, że połączenia nie powiodły się.Wiele adresów IP i nazw hostów używanych przez Spark Driver i Master
Wtedy pozostaje nam zastanawiać: jak rozwiązać problemy z połączeniem: Spark postanawia na własną rękę, jak tłumaczyć między:
- hostname
- hostname.local (na Mac OS/X)
- hostname.domain
- localhost
- localhost.localdomain
- 127.0.0.1
- zewnętrzny adres IP
- wewnętrzny adres IP (na AWS)
Ważnym czynnikiem: niektórzy z klientów sieci/połączenia potrzebny jest mecz dokładny ciąg skutecznie kontaktować się z panem. W takim przypadku numer 127.0.0.1
nie jest taki sam jak hostname
. Widziałem w przypadkach, gdzie hostname
działa i hostname.local
nie: ten problem jest Mac-centric. Ale ... wtedy ten pierwszy przestaje działać - i brakuje mi narzędzi do rozwiązania tego problemu.
Opcja --master
daje możliwość wprowadzenia w błąd w systemie Linux, gdy masz wewnętrzny i zewnętrzny adres IP.
Poniżej znajduje się przykład na moim Macu. Widzę inne wzorce na AWS, a jeszcze inne na samodzielnych klastrach. To wszystko jest kłopotliwy i czasochłonny, ponieważ nie jest wyraźnie udokumentowane:
- gdzie mapowanie wystąpić
- jak osiągnąć spójny ciąg adresów mistrz poprzek:
- głównego
- web master ui adres
- Akka dla mistrza
Poniżej pokazano dane wyjściowe, gdy opcja --master
została dostarczona do przesłania iskier.
--master spark://mellyrn:7077
Wskazówka różnorodność adresów IP
http://25.x.x.x:4040
akka.tcp://[email protected]:7077
mellyrn/127.0.0.1:707
Oto wynik na Mac:
15/07/31 12:21:34 INFO SparkEnv: Registering OutputCommitCoordinator
15/07/31 12:21:34 INFO Utils: Successfully started service 'SparkUI' on port 4040.
15/07/31 12:21:34 INFO SparkUI: Started SparkUI at http://25.101.19.24:4040
15/07/31 12:21:34 INFO AppClient$ClientActor: Connecting to master akka.tcp://[email protected]:7077/user/Master...
15/07/31 12:21:35 WARN AppClient$ClientActor: Could not connect to akka.tcp://[email protected]:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://[email protected]:7077
15/07/31 12:21:35 WARN Remoting: Tried to associate with unreachable remote address [akka.tcp://[email protected]:7077]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: mellyrn/127.0.0.1:7077
15/07/31 12:21:54 INFO AppClient$ClientActor: Connecting to master akka.tcp://[email protected]:7077/user/Master...
15/07/31 12:21:54 WARN AppClient$ClientActor: Could not connect to akka.tcp://[email protected]:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://[email protected]:7077
15/07/31 12:21:54 WARN Remoting: Tried to associate with unreachable remote address [akka.tcp://[email protected]:7077]. Address is now gated for 5000
Na Linuksie połączenie iskra z opcją --master robi pracę (choć .setMaster() nie działa niezawodnie). Jednak nawet na Linuksie generowane są różne generowane ciągi master/driver: