Я прочитал Обзор режима кластера и до сих пор не могу понять различные процессы в автономном кластере Spark и параллелизм.
Является ли рабочий процессом JVM или нет? Я запустил bin\start-slave.sh
и обнаружил, что он породил рабочего, который на самом деле является JVM.
Согласно приведенной выше ссылке, исполнитель - это процесс, запускаемый для приложения на рабочем узле, на котором выполняются задачи. Исполнитель также является JVM.
Вот мои вопросы:
Исполнители по заявке. Тогда какова роль работника? Координирует ли это с исполнителем и передает результат обратно водителю? Или водитель напрямую общается с исполнителем? Если да, то какова цель работника тогда?
Как контролировать количество исполнителей для заявки?
Могут ли задачи выполняться параллельно исполнителю? Если да, как настроить количество потоков для исполнителя?
Какова связь между работником, исполнителями и ядрами исполнителя (--total-executor-core)?
Что значит иметь больше работников на узел?
Обновлено
Давайте возьмем примеры, чтобы лучше понять.
Пример 1: Автономный кластер с 5 рабочими узлами (каждый узел имеет 8 ядер) Когда я запускаю приложение с настройками по умолчанию.
Пример 2 Та же конфигурация кластера, что и в примере 1, но я запускаю приложение со следующими настройками --executor-cores 10 --total-executor-cores 10.
Пример 3 Та же конфигурация кластера, что и в примере 1, но я запускаю приложение со следующими настройками --executor-cores 10 --total-executor-cores 50.
Пример 4 Та же конфигурация кластера, что и в примере 1, но я запускаю приложение со следующими настройками --executor-cores 50 --total-executor-cores 50.
Пример 5 Та же конфигурация кластера, что и в примере 1, но я запускаю приложение со следующими настройками --executor-cores 50 --total-executor-cores 10.
В каждом из этих примеров Сколько исполнителей? Сколько потоков на одного исполнителя? Сколько ядер? Как определяется количество исполнителей для каждой заявки? Всегда ли это число рабочих?