Я пытаюсь понять основы Спарк внутренностей и Спарк документации для подачи заявок в локальном режиме, говорит для spark-submit --master
настройки:Apache режим Спарк автономный: количество ядер
местного [K] Run Спарк локально K рабочих потоков (в идеале установите это значение количество ядер на вашем компьютере).
local [*] Запустить Spark локально с столько рабочих потоков, сколько логических ядер на вашей машине.
Поскольку все данные хранятся на одном локальном компьютере, он не использует распределенные операции на RDD
с.
Как это работает и что происходит внутри, когда Spark использует несколько логических ядер?
Два комментария. Во-первых, для потоковой передачи вам необходимо выделить выделенный поток для каждого источника ввода, а также по крайней мере один для основной обработки, поэтому, если вы слушаете один сокет, вам понадобится хотя бы «local [2]». Во-вторых, иногда один поток будет быстрее, чем несколько потоков, если накладные расходы перевешивают преимущества. –
Это интересно - я экспериментировал, увидев ускорение, а не линейное. Предположим, я создаю задание с одиночным RDD, которое подходит для машинной памяти. Правильно ли, что RDD не будут разделены? Затем, как операции распараллеливаются с несколькими ядрами? –
вы можете разделить RDD на любое количество разделов, которые вы хотите. По умолчанию, если вы загружаете RDD из HDFS, у него будет несколько разделов, равное количеству блоков, которые он использовал в HDFS. Если вы загружаете файл из локальной файловой системы, вы можете указать номера разделов, в которые вы хотите разбить. Экспериментируя, вы можете сопоставить это число с тем, что наиболее эффективно; Я бы предложил попробовать 1x, 2x или 4x количество ядер вашего компьютера. – David