Я работаю над настройкой кластера Spark в многосетевой сети и столкнулся с некоторыми проблемами. Начну с физической конфигурации.
У меня есть 12 узлов в стойке с межстоечной сетью 100G infiniband с использованием ipoib и сетью управления 1G.
Spark отлично работает, когда я запускаю задания с главного узла в кластере, но теперь я пытаюсь выполнять задания со своей рабочей станции, которая подключена к сети управления, и именно здесь я столкнулся с проблемой.
Все искровые узлы имеют файл hosts, указывающий на сеть infiniband, поскольку я хочу, чтобы они общались по этой сети. Мне пришлось установить SPARK_MASTER_HOST для главного узла на 0.0.0.0, чтобы иметь возможность подключаться к главному узлу с моей рабочей станции.
Теперь я могу создать SparkSession и выполнять операции, но он всегда зависает, и когда я смотрю журналы рабочих процессов, я вижу, что они получают ошибку «Нет маршрута к хосту». Кажется, что хотя маршрут по умолчанию на узле установлен в подсеть управления, он пытается подключиться обратно к клиенту, используя сеть infiniband. (Я должен отметить, что я могу пинговать свою рабочую станцию со всех клиентов, поэтому я знаю, что сетевой маршрут в порядке. Также все брандмауэры в данный момент отключены)
В качестве примечания: из-за этой настройки веб-интерфейс мастера spark не работает очень хорошо, потому что все ссылки на рабочие процессы указывают на IP-адрес infiniband, поэтому он всегда терпит неудачу, но если вы просто измените IP-адрес вручную в адресная строка в нужную подсеть работает. Это тоже было бы неплохо исправить, но на самом деле это не так уж важно.
Я попытался просмотреть документацию по искрам, но на самом деле не нашел ничего полезного, я попытался поиграть с некоторыми сетевыми настройками, но мне не повезло. Мне трудно поверить, что spark не поддерживает частную сеть, но, возможно, это так.
Я ценю любую помощь или идеи, которые вы, ребята, можете мне дать.