3

Я работаю с Spark 2.0, задание начинается с сортировки входных данных и сохранения их вывода на HDFS.Spark 2.0 memory fraction

Я получал ошибки памяти, решение заключалось в том, чтобы увеличить значение «spark.shuffle.memoryFraction» от 0.2 до 0.8, и это решило проблему. Но в документации я обнаружил, что это устаревший параметр.

Как я понимаю, он был заменен на «spark.memory.fraction». Как изменить этот параметр с учетом сортировки и хранения на HDFS?

ответ

2

От documentation:

Хотя есть две соответствующие конфигурации, типичный пользователь не нужно настраивать их в качестве значения по умолчанию применимы к большинства рабочих нагрузок:

  • spark.memory.fraction Выражает размер M в виде доли (пространство кучи JVM - 300 МБ) (значение по умолчанию 0,6). Остальная часть пространства (25%)
    зарезервирована для пользовательских структур данных, внутренних метаданных в Spark и , защищая от ошибок OOM в случае редких и необычных
    больших записей.
  • spark.memory.storageFraction выражает размер R в виде доли М (по умолчанию 0,5). R - пространство для хранения в пределах M, где кешированный блокирует иммунитет к тому, чтобы быть выдворенным исполнением.

Значение spark.memory.fraction должны быть установлено для того, чтобы соответствовать этой количества кучного пространства удобно в пределах старого или «штатный» поколения JVM в. В противном случае, когда большая часть этого пространства используется для кэширования и выполнения , поколение поколений будет заполнено, что приведет к значительному увеличению времени, затрачиваемого на сбор мусора, JVM .

В Я бы изменил spark.storage.memoryFraction.

В качестве примечания стороны, вы уверены, что понимаете, как ведет себя ваша работа?

Это типично для точной настройки вашей работы, начиная с memoryOverhead, #cores и т. Д. Во-первых, а затем перейти к атрибуту, который вы изменили.