복붙노트

[HADOOP] SparkException : 파이썬 작업자가 다시 연결하지 못했습니다.

HADOOP

SparkException : 파이썬 작업자가 다시 연결하지 못했습니다.

2 작업자 노드 Spark 클러스터에 Python 작업을 제출하려고 시도하고 있지만 다음 문제가 계속 발생하여 결국 spark-submit이 실패하게됩니다.

15/07/04 21:30:40 WARN scheduler.TaskSetManager: Lost task 0.1 in stage 0.0 (TID
 2, workernode0.rhom-spark.b9.internal.cloudapp.net):    
org.apache.spark.SparkException: Python worker did not connect back in time
    at org.apache.spark.api.python.PythonWorkerFactory.createSimpleWorker(PythonWorkerFactory.scala:135)
    at org.apache.spark.api.python.PythonWorkerFactory.create(PythonWorkerFactory.scala:64)
    at org.apache.spark.SparkEnv.createPythonWorker(SparkEnv.scala:102)
    at org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:70)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:278)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:245)
    at org.apache.spark.api.python.PairwiseRDD.compute(PythonRDD.scala:305)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:278)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:245)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
    at org.apache.spark.scheduler.Task.run(Task.scala:56)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketTimeoutException: Accept timed out
    at java.net.DualStackPlainSocketImpl.waitForNewConnection(Native Method)

    at java.net.DualStackPlainSocketImpl.socketAccept(DualStackPlainSocketImpl.java:135)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:199)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.spark.api.python.PythonWorkerFactory.createSimpleWorker(PythonWorkerFactory.scala:130)
    ... 15 more

나는 다음과 같이 일자리를 제출하고있다.

spark-submit --master yarn --py-files tile.py --num-executors 1 --executor-memory 2g main.py

어떤 아이디어?

해결법

  1. ==============================

    1.따라서 파이썬 작업자 프로세스가 spark executor JVM에 연결하지 못하는 경우에 발생합니다. Spark은 소켓을 사용하여 작업자 프로세스와 통신합니다. 이러한 일이 발생할 수있는 많은 이유가 있으며 정확한 세부 정보는 집행자 / 작업자 시스템의 로그에있을 수 있습니다.

    따라서 파이썬 작업자 프로세스가 spark executor JVM에 연결하지 못하는 경우에 발생합니다. Spark은 소켓을 사용하여 작업자 프로세스와 통신합니다. 이러한 일이 발생할 수있는 많은 이유가 있으며 정확한 세부 정보는 집행자 / 작업자 시스템의 로그에있을 수 있습니다.

  2. from https://stackoverflow.com/questions/31225412/sparkexception-python-worker-did-not-connect-back-in-time by cc-by-sa and MIT license