TL; DR: в чем разница между режимами развертывания клиента и кластера в автономном кластере Spark? Как мне установить, в каком режиме будет работать мое приложение?
У нас есть автономный кластер Spark с тремя машинами, все с Spark 1.6.1:
- Главный компьютер, на котором также запускается наше приложение с использованием
spark-submit
- 2 одинаковых рабочих машины
В документации Spark я прочитал:
(...) Для автономных кластеров Spark в настоящее время поддерживает два режима развертывания. В клиентском режиме драйвер запускается в том же процессе, что и клиент, отправляющий приложение. Однако в кластерном режиме драйвер запускается из одного из рабочих процессов внутри кластера, и клиентский процесс завершается, как только он выполняет свои обязанности по отправке приложения, не дожидаясь завершения работы приложения.
Однако я не совсем понимаю практические различия, читая это, и я не понимаю, каковы преимущества и недостатки различных режимов развертывания.
Кроме того, когда я запускаю свое приложение с помощью команды start-submit, даже если я установил для свойства spark.submit.deployMode
значение «cluster», пользовательский интерфейс Spark для моего контекста показывает следующую запись:
Поэтому я не могу протестировать оба режима, чтобы увидеть практические различия. При этом мои вопросы:
1) В чем практические различия между режимом развертывания client Standalone Spark и режимом развертывания кластера? Какие плюсы и минусы использования каждого из них?
2) Как выбрать, на каком из приложений будет работать, используя spark-submit
?