Многосетевой искровой кластер - PullRequest
0 голосов
/ 17 сентября 2018

Я работаю над настройкой кластера Spark в многосетевой сети и столкнулся с некоторыми проблемами.Я начну с физической конфигурации.

У меня 12 стоек в стойке, которые имеют межстраничную инфинитную сеть 100G с использованием ipoib и сети управления 1G.

Spark отлично работает, когдаЯ запускаю задания с главного узла в кластере, но теперь я пытаюсь выполнять задания со своей рабочей станции, которая подключена к сети управления, где я столкнулся с проблемой.

Все узлы спарк имеют своих хостовфайл указывает на сеть infiniband, так как я хочу, чтобы они общались по этой сети.Мне пришлось установить SPARK_MASTER_HOST для мастер-узла на 0.0.0.0, чтобы даже иметь возможность подключаться к мастеру с моей рабочей станции.

Теперь я могу создать SparkSession и выполнять операции, но он всегда зависает, и когда япосмотрите журналы рабочих, я вижу, что они получают ошибку "Нет маршрута к хосту".Кажется, что хотя маршрут по умолчанию для узла настроен на подсеть управления, он пытается подключиться к клиенту с помощью сети infiniband.(Я должен отметить, что я могу пропинговать свою рабочую станцию ​​от всех клиентов, так что я знаю, что сетевой маршрут в порядке. Также все брандмауэры в настоящий момент отключены)

В качестве примечания, из-заПри такой настройке веб-интерфейс spark master работает не очень хорошо, потому что все ссылки на рабочих указывают на IP-адрес infiniband, поэтому он всегда дает сбой, но если вы просто измените IP-адрес вручную в адресной строке на правильную подсеть, то этоработает.Это было бы неплохо исправить, но это не так уж и сложно.

Я попытался просмотреть документацию по искрам, но на самом деле я не нашел ничего полезного, я попытался поиграть с некоторыми изнастройки сети, но мне не повезло.Мне трудно поверить, что spark не поддерживает частную сеть, но, возможно, это так.

Я ценю любую помощь или идеи, которые вы, ребята, можете мне дать.

1 Ответ

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

Раньше я сталкивался с этими проблемами все время (в том числе в контексте InfiniBand) и не нашел правильного решения, а всего лишь несколько обходных путей. Проблема заключается в том, что Spark не позволяет клиентам <-> master и master <-> подключаться в разных сетях.

Обходной путь № 1: Используйте кластерный режим YARN Ваше приложение будет работать в кластере YARN (который, как я полагаю, совпадает с вашим кластером Spark) и, таким образом, будет иметь доступ к сети InfiniBand. В этом случае вам необходимо убедиться, что задания могут быть отправлены в YARN через сеть управления. YARN запустит процессы Spark, которые будут привязаны к сети InfiniBand.

Обходной путь № 2: прокси Другой вариант (который я не пробовал, но должен работать) - это настроить прокси-демон на главном узле Spark, который будет ретранслировать ваши сети управления <-> IB.

...