Почему мои искровые исполнители постоянно запускаются и выходят? - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь запустить простой скрипт Python на своем автономном кластере Spark. Кластер имеет один узел с bin/start-master.sh и два узла с bin/start-slave.sh. Глядя на интерфейс Spark на главном узле, я вижу, что мастер может видеть рабочих. Вот мой маленький скрипт теста Python:

from pyspark import SparkContext

def add_three(num: int):
    return num + 3

print("Initializing spark context....")
sc = SparkContext(appName="test.py")

arr = [x for x in range(1000)]
print(f'Initial array: {arr}')
res = (sc.parallelize(arr)
         .map(lambda x: add_three(x))
         .collect())
print(f'Transformed array: {res}')
sc.stop()

Я запускаю это на отдельном узле с помощью команды:

bin/spark-submit --master spark://spark-master:7077 test.py

Это сбивает с толку, и я вижу приложение в пользовательском интерфейсе моего мастера. На выходе выводится исходный массив, но затем идет непрерывный поток рабочих, выходящих и запускающихся. Вот логи мастера:

2018-08-31 21:23:12 INFO  Master:54 - I have been elected leader! New state: ALIVE
2018-08-31 21:23:18 INFO  Master:54 - Registering worker 10.1.2.93:38905 with 1 cores, 1024.0 MB RAM
2018-08-31 21:23:20 INFO  Master:54 - Registering worker 10.1.1.107:36421 with 1 cores, 1024.0 MB RAM
2018-08-31 21:25:51 INFO  Master:54 - Registering app test.py
2018-08-31 21:25:51 INFO  Master:54 - Registered app test.py with ID app-20180831212551-0000
2018-08-31 21:25:52 INFO  Master:54 - Launching executor app-20180831212551-0000/0 on worker worker-20180831212319-10.1.1.107-36421
2018-08-31 21:25:52 INFO  Master:54 - Launching executor app-20180831212551-0000/1 on worker worker-20180831212318-10.1.2.93-38905
2018-08-31 21:25:53 INFO  Master:54 - Removing executor app-20180831212551-0000/0 because it is EXITED
2018-08-31 21:25:53 INFO  Master:54 - Launching executor app-20180831212551-0000/2 on worker worker-20180831212319-10.1.1.107-36421
2018-08-31 21:25:55 INFO  Master:54 - Removing executor app-20180831212551-0000/2 because it is EXITED
2018-08-31 21:25:55 INFO  Master:54 - Launching executor app-20180831212551-0000/3 on worker worker-20180831212319-10.1.1.107-36421
2018-08-31 21:25:55 INFO  Master:54 - Removing executor app-20180831212551-0000/1 because it is EXITED
2018-08-31 21:25:55 INFO  Master:54 - Launching executor app-20180831212551-0000/4 on worker worker-20180831212318-10.1.2.93-38905
2018-08-31 21:25:56 INFO  Master:54 - Removing executor app-20180831212551-0000/3 because it is EXITED
2018-08-31 21:25:56 INFO  Master:54 - Launching executor app-20180831212551-0000/5 on worker worker-20180831212319-10.1.1.107-36421

Я знаю, что это работает, когда в моем скрипте pyspark я использую SparkContext("local", "test.py"). Кажется, что ни в одном из журналов драйверов или журналов исполнителей нет ошибок, поэтому у меня нет подсказок о том, что идет не так, но все они постоянно прокручивают запуск и удаление исполнителя.

Любое понимание будет с благодарностью! Спасибо!

1 Ответ

0 голосов
/ 13 сентября 2018

Оказывается, это была проблема с сетью. Я управлял искровыми рабочими, мастером и драйвером в отдельных док-контейнерах, и мне нужно было открыть порты между ними. В частности, порты для spark.driver.port, spark.ui.port и spark.blockManager.port. Я смог заставить все работать, следуя dockerfile и запустив сценарии в этом репозитории: https://github.com/tashoyan/docker-spark-submit

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...