Ключевые концепции Apache Spark в Azure Synapse Analytics

Apache Spark — это платформа параллельной обработки, которая поддерживает обработку в памяти, чтобы повысить производительность приложений для анализа больших данных. Apache Spark в Azure Synapse Analytics — это одна из реализаций Apache Spark в облаке, предоставляемая корпорацией Майкрософт.

Azure Synapse упрощает создание и настройку компонентов Spark в Azure. Azure Synapse предоставляет различные реализации компонентов Spark, которые здесь описаны.

Пулы Spark

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

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

Рекомендуется создавать пулы Spark малого размера для разработки и отладки, а более крупные пулы — для производственных рабочих нагрузок.

Сведения о том, как создать пул Spark в Azure Synapse Analytics и просмотреть все его свойства, см. в кратком руководстве Создание нового бессерверного пула Apache Spark с помощью портала Azure.

Экземпляры Spark

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

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

Выставление счетов за экземпляры начинается при запуске виртуальных машин Azure. Выставление счетов за экземпляры пула Spark останавливается при изменении экземпляров пула на завершение. Дополнительные сведения о запуске и освобождении виртуальных машин Azure см. в статье "Состояния и состояние выставления счетов Azure" Виртуальные машины.

Примеры

Пример 1

  • Вы создаете пул Spark с именем SP1; Он имеет фиксированный размер кластера 20 средних узлов
  • Вы отправляете задание записной книжки J1, использующее 10 узлов, экземпляр Spark, SI1 создается для обработки задания.
  • Теперь вы отправляете другое задание J2, использующее 10 узлов, так как в пуле по-прежнему есть емкость, а экземпляр J2 обрабатывается SI1.
  • Если J2 попросил 11 узлов, то в SP1 или SI1 не было бы емкости. В этом случае, если J2 поступает из записной книжки, задание отклоняется; Если J2 поступает из пакетного задания, он помещается в очередь.
  • Выставление счетов начинается с отправки задания записной книжки J1.
    • Пул Spark создается с 20 средними узлами, каждый из которых имеет 8 виртуальных ядер, и обычно занимает около 3 минут. 20 x 8 = 160 виртуальных ядер.
    • В зависимости от точного времени запуска пула Spark, времени ожидания простоя и среды выполнения двух заданий записной книжки; Пул, скорее всего, будет работать в течение 18–20 минут (время создания пула Spark и время ожидания задания записной книжки и время ожидания простоя).
    • Предполагая 20-минутную среду выполнения, 160 x 0,3 часа = 48 виртуальных ядер.
    • Примечание. Плата за часы виртуальных ядер взимается в минуту, а цены на виртуальные ядра зависят от региона Azure. Дополнительные сведения см. в статье о ценах На Azure Synapse

Пример 2

  • Вы создаете вызов пула Spark с пакетом обновления 2 (SP2); Он включает автомасштабирование с не менее 10 до 20 средних узлов.
  • Вы отправляете задание записной книжки J1, использующее 10 узлов; Создается экземпляр Spark SI1 для обработки задания.
  • Теперь вы отправляете другое задание J2, использующее 10 узлов; так как в пуле все еще есть емкость, экземпляр автомасштабирует до 20 узлов и обрабатывает J2.
  • Выставление счетов начинается с отправки задания записной книжки J1.
    • Пул Spark создается экземпляром с 10 средними узлами, каждый из которых содержит 8 виртуальных ядер, и обычно занимает около 3 минут. 10 x 8, 80 виртуальных ядер.
    • При отправке J2 пул автомасштабируется путем добавления еще 10 средних узлов и обычно занимает 4 минуты для автомасштабирования. Добавление 10 x 8, 80 виртуальных ядер для общей сложности 160 виртуальных ядер.
    • В зависимости от времени запуска пула Spark среда выполнения первого задания записной книжки J1, время масштабирования пула, среды выполнения второй записной книжки и, наконец, времени ожидания простоя; Пул, скорее всего, будет выполняться в диапазоне от 22 до 24 минут (время создания пула Spark + время выполнения задания записной книжки J1 во всех 80 виртуальных ядер) + (время автоматического масштабирования пула Spark + время ожидания задания J2 записной книжки + время ожидания простоя всех на 160 виртуальных ядер).
    • 80 виртуальных ядер в течение 4 минут + 160 виртуальных ядер в течение 20 минут = 58,67 виртуальных ядер.
    • Примечание. Плата за часы виртуальных ядер взимается в минуту, а цены на виртуальные ядра зависят от региона Azure. Дополнительные сведения см. в статье о ценах На Azure Synapse

Пример 3

  • Создайте пул Spark с именем SP1 и фиксированным размером кластера — 20 узлов.
  • Вы отправляете задание записной книжки J1, использующее 10 узлов; Экземпляр Spark SI1 создается для обработки задания.
  • Другой пользователь U2 отправляет задание J3, использующее 10 узлов; Для обработки задания создается новый экземпляр Spark SI2.
  • Теперь вы отправляете другое задание J2, использующее 10 узлов; так как в пуле по-прежнему есть емкость, а экземпляр J2 обрабатывается SI1.
  • Выставление счетов начинается с отправки задания записной книжки J1.
    • Пул Spark SI1 создается с 20 средними узлами, каждый из которых имеет 8 виртуальных ядер и обычно занимает около 3 минут. 20 x 8, 160 виртуальных ядер.
    • В зависимости от точного времени запуска пула Spark, времени ожидания интегрированной среды разработки и среды выполнения первого и третьего задания записной книжки; Пул SI1, скорее всего, будет работать в течение 18–20 минут (время создания пула Spark + время выполнения задания записной книжки и время ожидания простоя).
    • Другой пул Spark SI2 создается с 20 средними узлами, каждый из которых имеет 8 виртуальных ядер, и обычно занимает около 3 минут. 20 x 8, 160 виртуальных ядер
    • В зависимости от точного времени запуска пула Spark, времени ожидания интегрированной среды разработки и среды выполнения первого задания записной книжки; Пул SI2, скорее всего, будет работать в течение 18–20 минут (время создания пула Spark + время выполнения задания записной книжки и время ожидания простоя).
    • Предположим, что два пула выполняются в течение 20 минут каждый, 160 x 03 x 2 = 96 часов виртуальных ядер.
    • Примечание. Плата за часы виртуальных ядер взимается в минуту, а цены на виртуальные ядра зависят от региона Azure. Дополнительные сведения см. в статье о ценах На Azure Synapse

Квоты и ограничения ресурсов в Apache Spark для Azure Synapse

Уровень рабочей области

В каждой рабочей области Azure Synapse есть квота виртуальных ядер по умолчанию, которую можно использовать для Spark. Квота разделяется на квоту пользователя и квоту потока данных, чтобы предотвратить использование всех виртуальных ядер в рабочей области одним шаблоном использования. Квота различается в зависимости от типа подписки, но является симметричной между пользователем и потоком данных. Однако если вы запрашиваете больше виртуальных ядер, чем осталось в рабочей области, то вы получите следующую ошибку:

Failed to start session: [User] MAXIMUM_WORKSPACE_CAPACITY_EXCEEDED
Your Spark job requested 480 vCores.
However, the workspace only has xxx vCores available out of quota of yyy vCores.
Try reducing the numbers of vCores requested or increasing your vCore quota. Click here for more information - https://go.microsoft.com/fwlink/?linkid=213499

Ссылка в сообщении указывает на эту статью.

В следующей статье описывается, как запросить увеличение квоты виртуальных ядер в рабочей области.

  • Выберите "Azure Synapse Analytics" в качестве типа службы.
  • В окне сведений о квоте выберите Apache Spark (виртуальное ядро) на рабочую область.

Запросить увеличение емкости на портале Azure

Уровень пула Spark

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

Failed to start session: Your Spark job requested xx vCores.
However, the pool is consuming yy vCores out of available zz vCores.Try ending the running job(s) in the pool, reducing the numbers of vCores requested, increasing the pool maximum size or using another pool

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

Следующие шаги