2014-11-20 10 views
13

Ich habe ein Funken-Cluster mit 10 Knoten, und ich bin immer diese Ausnahme nach dem Spark-Kontext zum ersten Mal mit:Intermittent Timeout Exception mit Funken

14/11/20 11:15:13 ERROR UserGroupInformation: PriviledgedActionException as:iuberdata (auth:SIMPLE) cause:java.util.concurrent.TimeoutException: Futures timed out after [120 seconds] 
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException: Unknown exception in doAs 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1421) 
    at org.apache.spark.deploy.SparkHadoopUtil.runAsSparkUser(SparkHadoopUtil.scala:52) 
    at org.apache.spark.executor.CoarseGrainedExecutorBackend$.run(CoarseGrainedExecutorBackend.scala:113) 
    at org.apache.spark.executor.CoarseGrainedExecutorBackend$.main(CoarseGrainedExecutorBackend.scala:156) 
    at org.apache.spark.executor.CoarseGrainedExecutorBackend.main(CoarseGrainedExecutorBackend.scala) 
Caused by: java.security.PrivilegedActionException: java.util.concurrent.TimeoutException: Futures timed out after [120 seconds] 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:415) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408) 
    ... 4 more 

Diese guy ein ähnliches Problem gehabt haben, aber Ich habe seine Lösung schon versucht und habe nicht funktioniert.

Die gleiche Ausnahme passiert auch here aber das Problem ist nicht die gleichen hier drin, wie ich Spark-Version 1.1.0 sowohl in Master oder Slave und in Client verwenden.

Ich habe versucht, das Timeout auf 120s zu erhöhen, aber es löst das Problem immer noch nicht.

Ich bin die Dloyling der Umgebung durch Skripte und ich benutze die context.addJar, um meinen Code in den Klassenpfad einzuschließen. Dieses Problem ist intermittierend, und ich habe keine Ahnung, wie man verfolgt, warum es passiert. Wer hat dieses Problem bei der Konfiguration eines Funkenclusters gelöst? Wie kann man es lösen?

+1

Da dies Top-Antwort in Google ist, für zukünftige Referenz, RPC-Timeout kann ohne Firewall/Netzwerkkonfiguration auftreten, wenn Ihr Auftrag für konfigurierte Zeitraum, der 120 Sekunden in Spark 2.0 ist. Ich habe dieses Problem jetzt und suche nach einer anderen Lösung als die Timeout-Zeit zu erhöhen. – halil

Antwort

5

Die Firewall wurde falsch konfiguriert und in einigen Fällen konnten die Slaves keine Verbindung zum Cluster herstellen. Dies führte zu einem Timeout-Problem, da die Slaves keine Verbindung zum Server herstellen konnten. Wenn diese Zeitüberschreitung auftritt, überprüfen Sie Ihre Firewall-Konfiguration.

+1

Hallo, ich weiß, dass es seit diesem Post eine Weile her ist, aber ich stehe vor dem gleichen Problem. Könnten Sie bitte weitere Hinweise zum Überprüfen der Firewall-Einstellungen geben, die dieses Problem verursachen? –

+1

Hallo @OlegShirokikh, wo setzen Sie ein? Ist es eine lokale Bereitstellung?Sie müssen überprüfen, ob Ihre Clusterserver aufeinander zugreifen können. Hier hatten die Slcaves keine Berechtigung, auf den Master zuzugreifen, und das verursachte dieses Problem. – dirceusemighini

0

Ich hatte ein ähnliches Problem und ich schaffte es, um es zu umgehen mit cluster Deployment-Modus, wenn submitting the application to Spark.

(Denn auch alle eingehenden Datenverkehr sowohl mein Master und dem Single-Slave ermöglicht hat mir nicht erlauben, den client deploy-Modus zu verwenden. Bevor sie zu ändern hatte ich von Spark EC2 scripts einrichten Standardsicherheitsgruppe (AWS Firewall) Einstellungen aus Spark 1.2.0).

8

Wir hatten ein ähnliches Problem, das ziemlich schwer zu debuggen und zu isolieren war. Lange Rede kurzer Sinn - Spark verwendet Akka, das sehr wählerisch ist, wenn FQDN-Hostnamen in IP-Adressen aufgelöst werden. Selbst wenn Sie die IP-Adresse an allen Orten angeben, ist es nicht genug. Die Antwort here half uns, das Problem zu isolieren.

Ein nützlicher Test zum Ausführen ist netcat -l <port> auf dem Master ausgeführt und nc -vz <host> <port> auf dem Arbeiter ausgeführt, um die Konnektivität zu testen. Führen Sie den Test mit einer IP-Adresse und dem FQDN aus. Sie können den Namen abrufen, den Spark von der WARN-Nachricht aus dem Protokollausschnitt unten verwendet. Für uns war es host032s4.staging.companynameremoved.info. Der IP-Adresstest für uns wurde bestanden und der FQDN-Test ist fehlgeschlagen, da unser DNS nicht richtig eingerichtet wurde.

INFO 2015-07-24 10:33:45 Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:35455] 
INFO 2015-07-24 10:33:45 Remoting: Remoting now listens on addresses: [akka.tcp://[email protected]:35455] 
INFO 2015-07-24 10:33:45 org.apache.spark.util.Utils: Successfully started service 'driverPropsFetcher' on port 35455. 
WARN 2015-07-24 10:33:45 Remoting: Tried to associate with unreachable remote address [akka.tcp://[email protected]:50855]. Address is now gated for 60000 ms, all messages to this address will be delivered to dead letters. 
ERROR 2015-07-24 10:34:15 org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:skumar cause:java.util.concurrent.TimeoutException: Futures timed out after [30 seconds] 

Eine andere Sache, die wir tun mussten, war die spark.driver.host und spark.driver.port Eigenschaften im Funken Skript einreichen zu spezifizieren. Dies liegt daran, dass wir Computer mit zwei IP-Adressen hatten und der FQDN auf die falsche IP-Adresse aufgelöst wurde.

Stellen Sie sicher, dass Ihre Netzwerk- und DNS-Einträge korrekt sind!

Verwandte Themen