Shuffle Write Size / Records

В Apache Spark операции "перетасовки" (shuffle) включают перераспределение данных между разделами, что может быть необходимо для операций, таких как groupBy, reduceByKey, join и других. Во время перетасовки данные временно записываются на диск, чтобы помочь управлять перемещением данных между различными стадиями вычислений.
image Значение 770.4 KiB / 12000 означает что во время этого этапа суммарно на исполнителях было сохранено 770.4 Кибибайт / 12000 строк
Во вкладке Агрегированные показатели по исполнителям можно увидеть подробности, как запись данных распределена по исполнителям.
Перетасованные данные, как правило, записываются на локальные диски нод, где работают исполнители. Это делается для обработки случаев, когда данные, которые перетасовываются, слишком велики, чтобы поместиться в памяти. Местоположение и управление файлами shuffle можно настроить с помощью параметра:

  • spark.local.dir: Указывает директории на локальной файловой системе, где Spark хранит временные данные, включая файлы shuffle.

А давайте посмотрим где они хранятся в файловой системе ноды. Это можно сделать несколькими способами.

1 способ

spark.local.dir у нас не задан, а за управление ресурсами у нас отвечает YARN.
Если посмотреть на код спарка:
1
2
То становится понятным, что местоположение временных данных определяется переменной окружения LOCAL_DIRS, которая в свою очередь определяется настройкой Yarn. Переменная окружения LOCAL_DIRS процесса JVM драйвера/исполнителя установлена как ${yarn.nodemanager.local-dirs}/usercache/${user}/appcache/application_${appid}
Посмотрев файл yarn-site.xml можно увидеть значение этого параметра. image

2 способ

Если у нас уровень ведения журнала INFO, мы можем увидеть место для хранения временных данных в логах журнала. Для этого откроем логи и найдем вывод DiskBlockManager: Created local directory ...
image
image

Смотрим файлы

Подключившись к ноде по ссш, мы можем взглянуть на то что там хранится.
image
Учтите такой момент, начиная с Spark 1.0, Spark очищает файлы shuffle на основе GC в драйвере - когда shuffle больше не ссылается ни на один активный RDD, то соответствующие файлы shuffle удаляются из исполнителей.
Для примера, файлы шафла выглядят так:
image


Published

Category

Notes

Tags

Contact