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