Я пытаюсь разместить локально автономный кластер искры. У меня есть две разнородные машины, подключенные к локальной сети. Каждая часть архитектуры, перечисленная ниже, работает в докере. у меня следующая конфигурация
- мастер на машине 1 (порт 7077 открыт)
- рабочий на машине 1
- водитель на машине 2
Я использую тестовое приложение, которое открывает файл и считает его строки. Приложение работает, когда файл реплицируется на всех воркерах и я использую SparkContext.readText()
Но когда файл присутствует только на рабочем, а я использую SparkContext.parallelize()
для доступа к нему на рабочих, у меня есть следующий дисплей:
INFO StandaloneSchedulerBackend: Granted executor ID app-20180116210619-0007/4 on hostPort 172.17.0.3:6598 with 4 cores, 1024.0 MB RAM
INFO StandaloneAppClient$ClientEndpoint: Executor updated: app-20180116210619-0007/4 is now RUNNING
INFO StandaloneAppClient$ClientEndpoint: Executor updated: app-20180116210619-0007/4 is now EXITED (Command exited with code 1)
INFO StandaloneSchedulerBackend: Executor app-20180116210619-0007/4 removed: Command exited with code 1
INFO StandaloneAppClient$ClientEndpoint: Executor added: app-20180116210619-0007/5 on worker-20180116205132-172.17.0.3-6598 (172.17.0.3:6598) with 4 cores```
это продолжается снова и снова без фактического вычисления приложения.
Это работает, когда я ставлю драйвер на тот же компьютер, что и рабочий. Так что я предполагаю, что есть какое-то соединение, которое можно разрешить между этими двумя по сети. Знаете ли вы, как это сделать (какие порты открыть, какой адрес добавить в /etc/hosts...)