Поведение Spark в собственной файловой системе - PullRequest
0 голосов
/ 01 февраля 2019

Мы экспериментируем с запуском Spark в нашем проекте без Hadoop и распределенного хранилища, такого как HDFS.Spark устанавливается на одном узле с 10 ядрами и 16 ГБ ОЗУ, и этот узел не является частью какого-либо кластера.Предполагая, что драйвер Spark занимает 2 ядра, а остальные из них потребляются исполнителями (по 2 каждого) во время выполнения.

Если мы обрабатываем большой файл CSV (размером 1 ГБ), хранящийся на локальном диске в SparkБудут ли исполнители обрабатывать каждый раздел как RDD и перераспределять его на 4 разных раздела?Что бы сделали исполнители, если мы не переделим RDD на 4 раздела diff?Не теряем ли мы возможности распределенных вычислений и параллелизма, если не используем HDFS?

1 Ответ

0 голосов
/ 01 февраля 2019

Spark ограничивает максимальный размер раздела в 2G, поэтому вы сможете обрабатывать все данные с минимальным разделением и более быстрым временем обработки.Вы можете установить spark.executor.cores на 8, чтобы использовать все свои ресурсы.

В идеале вам следует установить количество разделов в зависимости от размера ваших данных, и вам лучше установить количество разделов.разделы как кратные ядра / исполнители.

Чтобы ответить на ваш вопрос, установка количества разделов на 4 в вашем случае, вероятно, приведет к тому, что каждый раздел будет отправлен исполнителю.Так что да, каждый раздел будет обрабатываться параллельно.

Если вы не переделите, Spark сделает это за вас в зависимости от данных и распределит нагрузку между исполнителями.

Sparkпрекрасно работает без Hadoop.Вы можете увидеть незначительное снижение производительности, поскольку ваши файлы находятся в локальной файловой системе, а не в HDFS, но для файла размером 1 ГБ это действительно не имеет значения.

...