Автономный кластер Spark на пользовательской JVM

Я пытаюсь развернуть автономный кластер Spark, используя специально созданную JVM. Запуск главного и рабочего процессов Spark — это нормально, но как только драйвер запускается и отправляет работу главному, рабочий процесс падает, потому что он пытается разветвить Executor, просматривая JAVA_HOME/bin/java. Есть ли способ настроить запуск исполнителя, чтобы он использовал пользовательскую JVM?


person FreeMemory    schedule 25.05.2016    source источник


Ответы (1)


Я понял, что самый простой способ сделать это — наследовать org.apache.spark.deploy.worker.Worker. Я сделал это на Java, а затем создал PartialFunction, которая обрабатывала только сообщение LaunchExecutor; когда я получил это сообщение, я создал еще один пользовательский экземпляр класса, унаследованный от ExecutorRunner.

Внутри моего CustomExecutorRunner я создал свою собственную специальную команду Java и выполнил ее вместо того, чтобы позволить ExecutorRunner сделать это.

Это было довольно грязно и требовало некоторого размышления, чтобы получить доступ к закрытым полям, которые мне были нужны, чтобы все работало гладко, но это сработало.

person FreeMemory    schedule 26.05.2016