2016-05-09 5 views
2

Ich versuche, eine sehr einfache Einrichtung mit Spark mit SSH-Tunneling tun, und ich kann es nicht funktionieren.Spark keine Arbeit am Slave: Erste Job hat keine Ressourcen akzeptiert

Ich habe Master läuft auf meinem PC, mit dieser Einrichtung ./sbin/start-master.sh -h localhost -p 7077 (wenn nicht anders angegeben, ist alles andere Standard).

Auf meinem Slave-PC (IP ist 192.168.0.222), die in anderen Domäne ist und ich habe keinen Root-Zugriff darauf, habe ich ssh -N -L localhost:7078:localhost:7077 myMasterPCSSHalias und führen Sie Slave mit ./sbin/start-slave.sh spark://localhost:7078. Ich kann diesen Sklaven jetzt auf dem Armaturenbrett unter http://localhost:8080/ in meinem Browser sehen. Ich sehe, dass es 14 GB freien Speicher hat.

Wenn ich dann z. dieses Beispiel:

./bin/spark-submit --master spark://localhost:7077 examples/src/main/python/pi.py 10 

es auf dieser Nachricht hängt, bis ich es töten (können Sie die vollständige Protokollmeldung siehe unten):

WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 

Ich bin sicher, ich bin nicht mehr Ressourcen als ich zur Verfügung habe , das Problem besteht immer noch, obwohl ich --executor-memory 512m benutze und ausführender Executor nur RUNNING-Status signalisiert. Das einzige, was in Fehlerprotokoll ist dies:

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 
16/05/09 22:45:44 INFO CoarseGrainedExecutorBackend: Registered signal handlers for [TERM, HUP, INT] 
16/05/09 22:45:44 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
16/05/09 22:45:45 INFO SecurityManager: Changing view acls to: hnykdan1,dan 
16/05/09 22:45:45 INFO SecurityManager: Changing modify acls to: hnykdan1,dan 
16/05/09 22:45:45 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(hnykdan1, dan); users with modify permissions: Set(hnykdan1, dan) 

und im Slave-Protokoll ist dies:

16/05/09 22:48:56 INFO Worker: Asked to launch executor app-20160509224034-0013/0 for PythonPi 
16/05/09 22:48:56 INFO SecurityManager: Changing view acls to: hnykdan1 
16/05/09 22:48:56 INFO SecurityManager: Changing modify acls to: hnykdan1 
16/05/09 22:48:56 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(hnykdan1); users with modify permissions: Set(hnykdan1) 
16/05/09 22:48:56 INFO ExecutorRunner: Launch command: "/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java" "-cp" "/home/hnykdan1/spark/conf/:/home/hnykdan1/spark/lib/spark-assembly-1.6.1-hadoop2.6.0.jar:/home/hnykdan1/spark/lib/datanucleus-core-3.2.10.jar:/home/hnykdan1/spark/lib/datanucleus-api-jdo-3.2.6.jar:/home/hnykdan1/spark/lib/datanucleus-rdbms-3.2.9.jar" "-Xms1024M" "-Xmx1024M" "-Dspark.driver.port=37450" "-XX:MaxPermSize=256m" "org.apache.spark.executor.CoarseGrainedExecutorBackend" "--driver-url" "spark://[email protected]:37450" "--executor-id" "0" "--hostname" "147.32.8.103" "--cores" "8" "--app-id" "app-20160509224034-0013" "--worker-url" "spark://[email protected]:54894" 

Alles sieht ganz normal und ich weiß nicht, wo ein Problem sein könnte. Muss ich auch andersherum tunneln? Es läuft gut, wenn ich den Slave lokal genau so betreibe. Dank

Full-Log von der Konsole

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 
16/05/09 22:28:21 INFO SparkContext: Running Spark version 1.6.1 
16/05/09 22:28:21 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
16/05/09 22:28:22 INFO SecurityManager: Changing view acls to: dan 
16/05/09 22:28:22 INFO SecurityManager: Changing modify acls to: dan 
16/05/09 22:28:22 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(dan); users with modify permissions: Set(dan) 
16/05/09 22:28:22 INFO Utils: Successfully started service 'sparkDriver' on port 34508. 
16/05/09 22:28:23 INFO Slf4jLogger: Slf4jLogger started 
16/05/09 22:28:23 INFO Remoting: Starting remoting 
16/05/09 22:28:23 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:44359] 
16/05/09 22:28:23 INFO Utils: Successfully started service 'sparkDriverActorSystem' on port 44359. 
16/05/09 22:28:23 INFO SparkEnv: Registering MapOutputTracker 
16/05/09 22:28:23 INFO SparkEnv: Registering BlockManagerMaster 
16/05/09 22:28:23 INFO DiskBlockManager: Created local directory at /tmp/blockmgr-db4c3293-423f-4966-a479-b69a90439da9 
16/05/09 22:28:23 INFO MemoryStore: MemoryStore started with capacity 511.1 MB 
16/05/09 22:28:23 INFO SparkEnv: Registering OutputCommitCoordinator 
16/05/09 22:28:24 INFO Utils: Successfully started service 'SparkUI' on port 4040. 
16/05/09 22:28:24 INFO SparkUI: Started SparkUI at http://192.168.0.222:4040 
16/05/09 22:28:24 INFO HttpFileServer: HTTP File server directory is /tmp/spark-d532a9c1-0455-4937-ad27-b47abb2a65e8/httpd-aa031b8c-f605-41c3-aabe-fc4fe01bdcf8 
16/05/09 22:28:24 INFO HttpServer: Starting HTTP Server 
16/05/09 22:28:24 INFO Utils: Successfully started service 'HTTP file server' on port 41770. 
16/05/09 22:28:24 INFO Utils: Copying /home/hnykdan1/spark/examples/src/main/python/pi.py to /tmp/spark-d532a9c1-0455-4937-ad27-b47abb2a65e8/userFiles-14720bed-cd41-4b15-9bd3-38dbf4f268ff/pi.py 
16/05/09 22:28:24 INFO SparkContext: Added file file:/home/hnykdan1/spark/examples/src/main/python/pi.py at http://192.168.0.222:41770/files/pi.py with timestamp 1462825704629 
16/05/09 22:28:24 INFO AppClient$ClientEndpoint: Connecting to master spark://localhost:7077... 
16/05/09 22:28:24 INFO SparkDeploySchedulerBackend: Connected to Spark cluster with app ID app-20160509222824-0011 
16/05/09 22:28:24 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 44617. 
16/05/09 22:28:24 INFO NettyBlockTransferService: Server created on 44617 
16/05/09 22:28:24 INFO AppClient$ClientEndpoint: Executor added: app-20160509222824-0011/0 on worker-20160509214654-147.32.8.103-54894 (147.32.8.103:54894) with 8 cores 
16/05/09 22:28:24 INFO BlockManagerMaster: Trying to register BlockManager 
16/05/09 22:28:24 INFO SparkDeploySchedulerBackend: Granted executor ID app-20160509222824-0011/0 on hostPort 147.32.8.103:54894 with 8 cores, 1024.0 MB RAM 
16/05/09 22:28:24 INFO BlockManagerMasterEndpoint: Registering block manager 192.168.0.222:44617 with 511.1 MB RAM, BlockManagerId(driver, 192.168.0.222, 44617) 
16/05/09 22:28:24 INFO BlockManagerMaster: Registered BlockManager 
16/05/09 22:28:25 INFO AppClient$ClientEndpoint: Executor updated: app-20160509222824-0011/0 is now RUNNING 
16/05/09 22:28:25 INFO SparkDeploySchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.0 
16/05/09 22:28:25 INFO SparkContext: Starting job: reduce at /home/hnykdan1/spark/examples/src/main/python/pi.py:39 
16/05/09 22:28:25 INFO DAGScheduler: Got job 0 (reduce at /home/hnykdan1/spark/examples/src/main/python/pi.py:39) with 10 output partitions 
16/05/09 22:28:25 INFO DAGScheduler: Final stage: ResultStage 0 (reduce at /home/hnykdan1/spark/examples/src/main/python/pi.py:39) 
16/05/09 22:28:25 INFO DAGScheduler: Parents of final stage: List() 
16/05/09 22:28:25 INFO DAGScheduler: Missing parents: List() 
16/05/09 22:28:25 INFO DAGScheduler: Submitting ResultStage 0 (PythonRDD[1] at reduce at /home/hnykdan1/spark/examples/src/main/python/pi.py:39), which has no missing parents 
16/05/09 22:28:26 INFO MemoryStore: Block broadcast_0 stored as values in memory (estimated size 4.0 KB, free 4.0 KB) 
16/05/09 22:28:26 INFO MemoryStore: Block broadcast_0_piece0 stored as bytes in memory (estimated size 2.7 KB, free 6.7 KB) 
16/05/09 22:28:26 INFO BlockManagerInfo: Added broadcast_0_piece0 in memory on 192.168.0.222:44617 (size: 2.7 KB, free: 511.1 MB) 
16/05/09 22:28:26 INFO SparkContext: Created broadcast 0 from broadcast at DAGScheduler.scala:1006 
16/05/09 22:28:26 INFO DAGScheduler: Submitting 10 missing tasks from ResultStage 0 (PythonRDD[1] at reduce at /home/hnykdan1/spark/examples/src/main/python/pi.py:39) 
16/05/09 22:28:26 INFO TaskSchedulerImpl: Adding task set 0.0 with 10 tasks 
16/05/09 22:28:41 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 
16/05/09 22:28:56 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 
16/05/09 22:29:11 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 
16/05/09 22:29:26 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 
16/05/09 22:29:41 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 
16/05/09 22:29:56 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 
16/05/09 22:30:11 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 
16/05/09 22:30:26 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 
+0

Haben Sie Ihre Mitarbeiter bei Ihrem Master registriert? –

+0

Wenn ich die Web-Management-Website auf Master localhost: 8080 öffne, kann ich sehen, dass dieser Mitarbeiter unter * Workers * auftaucht. Ich kann z.B. Python oder Scala REPL darauf. Dann zeigt es, dass es auf seinem Executor läuft. Aber wenn ich tatsächlich eine Berechnung durchführe (z. B. das Finden von Primzahlen), hängt es wie im Post beschrieben. Muss ich noch etwas tun, um den Arbeiter zu "registrieren"? Und es läuft gut, wenn ich einen Sklaven lokal auf die gleiche Weise starte .. – kotrfa

Antwort

0

Da Sie überprüft, dass Sie die Ressourcen haben, die nächste wahrscheinlichste Problem ist, dass der Vollstrecker nicht zurück an den Fahrer verbinden kann. Beim Senden eines Jobs startet der Treiber einen Server, mit dem der Executor eine Verbindung herstellt, um die JAR-Dateien herunterzuladen.

Ja, die Fehlermeldung (Initial job has not accepted any resources...) bezieht sich nicht auf das Netzwerkproblem. Dies ist ein bekanntes Problem, das hier beispielhaft erläutert wird: https://github.com/databricks/spark-knowledgebase/issues/9

+0

Vielen Dank für Ihre Antwort. Ich habe bereits alle diese Probleme durchgemacht und ich verstehe, dass es wahrscheinlich eher Konnektivität als geringe Ressourcen sind. Aber es gibt mir keinen Hinweis, wie man es löst (um ehrlich zu sein, ebenso wie Ihre Antwort). Ich habe sogar versucht, an einigen anderen Ports weitere Tunnel anzulegen, aber keine Änderung. Soll ich etwas Bestimmtes überprüfen? Wie z.B. Telnet-spezifischen Host und Port nach dem Start eines Jobs? – kotrfa

+0

Ok, zunächst einmal prüfen wir, ob es wirklich ein Verbindungsproblem ist. Sie können die Verbindung mit 'netcat' testen (manche Distributionen nennen sie' ncat' oder 'nc'). Weitere Details finden Sie auf der man-Seite. Was Sie tun können, ist von Ihrer Zündkerzen-Box, Sie können einen Port Ihrer Wahl hören, indem Sie 'ncat -lk 9999' ausführen.Nun, von der Zündkerzen-Box, sollten Sie versuchen, netcat zu verwenden, um sich mit diesem Port zu verbinden: 'ncat ip-address-of-your-driver 9999' Wenn dies funktioniert, können Sie ein Zeichen eingeben und es wird auf dem angezeigt Terminal, von dem Sie netcat im Hören mehr geleitet haben. Gib mir Bescheid! –

+0

Vielen Dank! Es scheint, es funktioniert gut. Auf Treiber: 'ncat -lk 9999'. Am Arbeiter: 'ssh -L Localhost: 9998: localhost: 9999 myDriverSshConfig' und dann' echo test | netcat localhost 9998 erzeugt die Ausgabe "test" auf meiner Treiberbox. – kotrfa

Verwandte Themen