Открыть сервис

Amazon EMR Serverless

Amazon EMR Serverless — это бессерверная вычислительная среда в составе облачного сервиса Amazon EMR (Amazon Elastic MapReduce), предоставляемая компанией Amazon Web Services (AWS) для запуска фреймворков обработки больших данных, таких как Apache Spark, Apache Hive и Presto. В отличие от традиционного Amazon EMR, где пользователь управляет кластерами виртуальных машин (EC2-инстансами), EMR Serverless автоматически выделяет, масштабирует и управляет вычислительными ресурсами, избавляя разработчиков и администраторов от необходимости настройки инфраструктуры. Пользователь оплачивает только фактически потреблённые ресурсы (vCPU и память) за время выполнения задач, без затрат на простаивающие кластеры.

История

Amazon EMR Serverless был анонсирован на конференции AWS re:Invent в декабре 2021 года и стал общедоступным (GA) в июне 2022 года. Разработка сервиса была ответом на растущий спрос на бессерверные архитектуры в области обработки данных, где пользователи хотели избежать сложностей управления кластерами, особенно при нерегулярных или пиковых нагрузках. До появления EMR Serverless пользователи Amazon EMR были вынуждены либо запускать долгоживущие кластеры (с постоянными затратами), либо использовать временные кластеры с автоматическим масштабированием, что требовало настройки и мониторинга. EMR Serverless стал частью более широкой стратегии AWS по предоставлению бессерверных опций для своих ключевых сервисов, таких как AWS Lambda, Amazon Aurora Serverless и Amazon Redshift Serverless.

Архитектура и принцип работы

Бессерверная модель

В EMR Serverless пользователь не управляет виртуальными машинами, операционной системой или кластером. Вместо этого он определяет приложение (application) — логическую единицу, которая представляет собой конфигурацию для запуска задач. Приложение может быть настроено на использование определённых фреймворков (например, Spark), версий библиотек и параметров сети. При запуске задания (job) EMR Serverless автоматически выделяет ресурсы в соответствии с требованиями задачи, выполняет её и освобождает ресурсы после завершения.

Компоненты

  • Приложение (Application): контейнер для конфигурации, который может быть запущен или остановлен. Приложение может быть общим для нескольких заданий.
  • Задание (Job Run): единичный запуск обработки данных (например, Spark-приложение). Каждое задание получает собственные изолированные ресурсы.
  • Рабочие роли (Worker): виртуальные вычислительные единицы, которые автоматически создаются и уничтожаются. Каждая рабочая роль имеет определённое количество vCPU и памяти.
  • Хранилище (Storage): EMR Serverless использует Amazon S3 для хранения входных и выходных данных, а также временные диски (эластичное блочное хранилище, EBS) для промежуточных данных, которые автоматически управляются сервисом.

Автомасштабирование

EMR Serverless автоматически масштабирует количество рабочих ролей в зависимости от объёма обрабатываемых данных и сложности задач. Масштабирование происходит в реальном времени, без вмешательства пользователя. Сервис поддерживает два режима масштабирования:

Ключевые характеристики

Поддерживаемые фреймворки

  • Apache Spark: основной фреймворк для пакетной и потоковой обработки данных, поддерживаемый с момента запуска. Поддерживаются версии Spark 3.x.
  • Apache Hive: фреймворк для выполнения SQL-запросов к данным, хранящимся в Hive Metastore. Поддерживается с 2023 года.
  • Presto и Trino: фреймворки для интерактивных SQL-запросов, добавленные позже.

Интеграция с экосистемой AWS

EMR Serverless тесно интегрируется с другими сервисами AWS:

Модель ценообразования

Ценообразование основано на потреблении ресурсов (vCPU и память) за секунду выполнения задания. Дополнительно взимается плата за хранение временных данных на EBS (если превышен бесплатный лимит). Минимальная продолжительность оплаты — 1 минута. Стоимость зависит от региона AWS. Для тестирования и небольших нагрузок доступен бесплатный уровень (Free Tier) с ограниченным количеством vCPU-часов в месяц.

Применение

Сценарии использования

  • Пакетная обработка данных: запуск ETL-задач (извлечение, преобразование, загрузка) на Apache Spark или Hive, например, ежедневная агрегация логов или генерация отчётов.
  • Интерактивные SQL-запросы: выполнение ad-hoc запросов к большим наборам данных с помощью Presto или Trino, без необходимости запуска постоянного кластера.
  • Обработка потоковых данных: использование Spark Streaming для обработки данных в реальном времени из Amazon Kinesis или Amazon MSK (Managed Streaming for Apache Kafka).
  • Машинное обучение: запуск задач по обучению и развёртыванию моделей на Spark MLlib.
  • Разработка и тестирование: быстрый запуск изолированных сред для разработки и отладки Spark-приложений без затрат на инфраструктуру.

Преимущества

  • Отсутствие управления инфраструктурой: пользователь не настраивает кластеры, не управляет масштабированием и не беспокоится о доступности.
  • Экономия затрат: оплата только за фактическое использование, без затрат на простаивающие ресурсы. Особенно выгодно для нерегулярных или пиковых нагрузок.
  • Автомасштабирование: ресурсы автоматически подстраиваются под объём данных, что повышает производительность и снижает время выполнения.
  • Изоляция заданий: каждое задание выполняется в изолированной среде, что исключает влияние одной задачи на другую.

Недостатки и ограничения

  • Ограниченная настройка: пользователь не может тонко настраивать параметры кластера (например, тип инстансов, сетевые настройки на уровне ОС).
  • Холодный старт: при первом запуске приложения или после длительного простоя может наблюдаться задержка на выделение ресурсов (обычно 30–60 секунд).
  • Зависимость от AWS: сервис привязан к экосистеме AWS, что затрудняет миграцию в другие облака или локальные среды.
  • Ограничения по ресурсам: максимальный размер задания ограничен (например, до 200 vCPU и 2000 ГБ памяти на одно задание в стандартной конфигурации, с возможностью увеличения по запросу).

Сравнение с традиционным Amazon EMR

ХарактеристикаAmazon EMR (кластерный)Amazon EMR Serverless
Управление инфраструктуройПользователь управляет кластером (EC2-инстансы)Полностью автоматическое
МасштабированиеРучное или автоматическое (на уровне кластера)Автоматическое, на уровне задания
ОплатаЗа время работы кластера (включая простой)За время выполнения задания (секундная тарификация)
НастройкаВысокая (выбор инстансов, конфигурация Hadoop, Spark)Ограниченная (только параметры приложения)
Время запускаМинуты (на создание кластера)Секунды (на выделение ресурсов)
Изоляция заданийЗадания делят ресурсы кластераКаждое задание изолировано

Интересные факты

  • EMR Serverless поддерживает выполнение заданий на основе контейнеров Docker, что позволяет использовать пользовательские образы с дополнительными библиотеками.
  • Сервис может автоматически оптимизировать выполнение Spark-заданий, например, выбирая оптимальный размер партиций для данных.
  • В 2023 году AWS добавила поддержку Spark Connect — протокола для удалённого выполнения Spark-задач, что упрощает интеграцию с Jupyter Notebooks и другими инструментами.
  • EMR Serverless не поддерживает некоторые функции традиционного EMR, такие как Ganglia для мониторинга кластера или интеграция с Apache Zeppelin.

Критика

Основные критические замечания в адрес EMR Serverless связаны с его зависимостью от экосистемы AWS и отсутствием гибкости в настройке. Пользователи, привыкшие к тонкой настройке параметров Spark или Hadoop, могут столкнуться с ограничениями. Кроме того, стоимость может быть выше, чем у традиционного EMR при постоянных нагрузках, так как бессерверные сервисы часто имеют премиальную наценку за удобство. Также отмечается, что для очень больших заданий (сотни терабайт) EMR Serverless может быть менее эффективен из-за ограничений на максимальные ресурсы.

Источники

  • Официальная документация Amazon EMR Serverless (AWS Documentation)
  • Анонс Amazon EMR Serverless на AWS re:Invent 2021 (AWS News Blog)
  • Статья «Amazon EMR Serverless: A New Way to Run Big Data Workloads» (AWS Compute Blog)
  • Сравнительный анализ Amazon EMR и EMR Serverless (AWS Whitepapers)
  • Обзор цен на Amazon EMR Serverless (AWS Pricing Page)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →