Режим высокой параллельности в Apache Spark для Fabric

Режим высокой параллелизма позволяет совместимым рабочим нагрузкам Spark совместно использовать один запущенный сеанс Spark, а не запускать отдельный сеанс для каждой рабочей нагрузки. Этот режим обычно используется для сценариев ноутбуков и конвейеров в Fabric.

Эта статья поможет вам понять следующее:

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

В стандартном режиме каждый ноутбук или операция конвейера запускает собственный сеанс Spark. В режиме высокой конкуренции одно приложение Spark размещает несколько рабочих нагрузок, назначая каждой рабочей нагрузке свой собственный цикл чтения-оценки-печати (REPL). Каждое ядро REPL изолирует состояние выполнения, поэтому локальные переменные в одной рабочей нагрузке не перезаписываются в другой рабочей нагрузке.

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

Примечание.

Для пользовательских пулов с режимом высокой одновременности запуск сессии может быть до 36 раз быстрее, чем стандартная сессия Spark.

Ключевые возможности

На диаграмме подчеркиваются три основные характеристики режима высокой параллельности.

  • Безопасность: общий доступ к сеансам остается в пределах границы одного пользователя.
  • Многозадачность. Вы можете переключаться между записными книжками и продолжать работу, не ожидая создания или инициализации нового сеанса Spark.
  • Экономичность. Общие сеансы улучшают использование ресурсов и сокращают затраты на вычисления для рабочих нагрузок по проектированию данных и обработке и анализу данных.

Схема, показывающая работу режима высокой параллелизма в Fabric.

Требования к совместному использованию сеансов

Общий доступ к сеансам применяется при выполнении следующих условий:

  • Сеансы ограничены границами одного пользователя.
  • Сеансы используют ту же конфигурацию Lakehouse по умолчанию.
  • Сеансы используют те же параметры вычислений Spark.

Если какие-либо требования отличаются, Fabric запускает отдельный сеанс Spark.

Во время инициализации сеанса Fabric создает ядро REPL. По мере того как новые рабочие нагрузки присоединяются к общему сеансу, исполнители выделяются с помощью планирования FAIR в этих ядрах REPL для снижения риска голода.

Поведение выставления счетов

При использовании режима высокой параллельности, плата взимается только за записную книжку или активность конвейера, которые инициируют запуск общего приложения Spark. Последующие сеансы, которые используют тот же сеанс Spark, не требуют отдельной оплаты.

Пример

  • Пользователь запускает Notebook 1, который инициирует сеанс Spark в режиме высокой параллелизма.
  • Затем этим сеансом делятся записная книжка 2, записная книжка 3, записная книжка 4 и записная книжка 5.
  • В этом случае счет за вычисления Spark выставляется только для ноутбук 1.
  • Общие записные книжки, количество которых от 2 до 5, не выставляются по отдельности.

Это поведение также отражается в метриках емкости, где использование указывается относительно инициирующей записной книжки.

Примечание.

Аналогичный процесс выставления счетов применяется к операциям в конвейере. Взимается плата только за записную книжку или действие, инициирующее сеанс Spark.

Ограничение для общего доступа к динамическим сеансам

По умолчанию сеанс с высокой степенью параллелизма поддерживает до пяти ноутбуков, совместно используемых в одном сеансе Spark. Для рабочих нагрузок, требующих более высокой плотности записных книжек( например, крупномасштабных параллельных конвейеров или корпоративной аналитики при пиковой нагрузке), это ограничение можно увеличить до 50 записных книжек на сеанс.

Примечание.

Это обновление не изменяет ограничение по умолчанию в 5. Чтобы увеличить его, необходимо явно задать spark.highConcurrency.max .

Настройка ограничения общего доступа к сеансам

Задайте ограничение общего доступа к сеансам в элементе среды , который используют записные книжки или записные книжки, активированные конвейером.

  1. Перейдите в рабочую область и откройте Environments.

  2. Выберите среду, связанную с вашей записной книжкой или конвейерной линией.

  3. Откройте свойства Spark.

  4. Добавьте следующее свойство и задайте значение от 2 до 50:

    spark.highConcurrency.max = <value>
    

    Например, чтобы разрешить до 20 записных книжек на сеанс:

    spark.highConcurrency.max = 20
    
  5. Сохраните и опубликуйте среду.

Все ноутбуки и операции конвейера, использующие эту среду, автоматически наследуют обновленное ограничение.

Когда увеличить ограничение общего доступа к сеансам

Сценарий Рекомендуемое действие
Крупномасштабные параллельные процессы с множеством операций в записных книжках Увеличьте spark.highConcurrency.max, чтобы уменьшить фрагментацию сеанса
Пиковая загрузка интерактивных рабочих нагрузок с множеством одновременных пользователей Увеличьте ограничение, чтобы повысить время приобретения сеанса
Рабочие нагрузки, чувствительные к затратам, в которых плотная упаковка снижает затраты на вычислительные ресурсы Настройка ограничения для соответствия требованиям параллелизма
Рабочие нагрузки с строгими требованиями к изоляции Сохранить ограничение по умолчанию в размере 5 или ниже

Увеличение ограничения общего доступа к сеансам включает:

  • Быстрое получение сеанса во время пиковой нагрузки путем уменьшения времени ожидания нового сеанса.
  • Более высокая плотность ноутбуков без разделения на множество отдельных сеансов.
  • Динамическая настройка, согласованная с интенсивностью рабочей нагрузки, затратами и целями по соотношению цена-производительность.
  • Повышение эффективности производительности цен при сохранении изоляции и справедливости между рабочими местами.