Сколько раз искровой пользовательский интерфейс пытается следующий порт, если 4040 не доступен - PullRequest
0 голосов
/ 18 мая 2018

мы выполняем несколько заданий одновременно, используя оболочку spark (используя версию 2.1). Последние пару дней мы продолжаем получать сообщение об ошибке:

СБОЙ: org.spark-project.jetty.server.Server@5552479: java.net.BindException: адрес уже используется

После прочтения пары переполнения стека, пост datastax, который я обнаружил, спарк по умолчанию пробует порт 4040 для интерфейса Spark в первый раз, а в случае неудачи пробует порт +1.

  • Если, скажем, 4041 также недоступен, сколько раз Spark пытается это сделать?

Согласно этому посту переполнения стека и документации spark мы можем предоставить spark.port.maxRetries конфигурацию, которая по умолчанию установлена ​​в 16, но

  • это свойство относится к spark.ui.port или только к spark.driver.port?

  • Как spark определяет, какой порт ему нужен для исполнителя? и скажем, у меня есть работа, которая использует 20 исполнителей, так как же spark решает, какие порты использовать для этих исполнителей? Можем ли мы это контролировать?

1 Ответ

0 голосов
/ 18 мая 2018

maxRetries только для водителя.когда инициализируется sparkContext, он начинается с того, который указан в файле spark.driver.port, а затем отключается на время maxRetires, увеличивая порт на 1. Этот порт виден всем исполнителям, выделенным менеджером кластера.Таким образом, если maxRetires равно 16 и если уже запущено 16 SparkContext, новый sparkContext не может быть инициализирован до тех пор, пока один из них не завершится.Диспетчер кластеров отвечает за получение необходимого ресурса для привлечения исполнителей, и я не думаю, что у нас есть контроль над портами, которые он получает.Пока исполнители могут связываться с драйвером через порт, на котором он инициализирован, проблем не должно быть.

...