Amazon Redshift Spectrum
Amazon Redshift Spectrum — это компонент сервиса облачных вычислений Amazon Web Services (AWS), позволяющий выполнять SQL-запросы к данным, хранящимся в форматах открытых файлов (Parquet, ORC, Avro, JSON, CSV, TSV и других) непосредственно в объектном хранилище Amazon Simple Storage Service (S3), без необходимости предварительной загрузки этих данных в кластер Amazon Redshift. Redshift Spectrum реализует архитектуру «разделения вычислений и хранения» (compute-storage separation), где обработка запросов выполняется на вычислительных узлах, управляемых сервисом, а данные остаются в S3.
Архитектура и принцип работы
Redshift Spectrum функционирует как внешний слой запросов (query engine), который интегрируется с ядром Amazon Redshift. Кластер Redshift выступает в роли координатора: он принимает SQL-запрос, анализирует его и, если запрос обращается к данным в S3, перенаправляет часть работы на Spectrum-слой.
Основные компоненты
- Кластер Amazon Redshift — основной вычислительный ресурс, содержащий локальные данные (в таблицах на узлах кластера) и управляющий выполнением запросов.
- Amazon S3 — объектное хранилище, где размещаются исходные файлы данных (например, логи веб-серверов, исторические архивы, данные из других систем).
- Spectrum-слой — набор управляемых AWS вычислительных ресурсов, которые автоматически масштабируются для параллельной обработки запросов. Эти ресурсы не входят в кластер Redshift и оплачиваются отдельно.
- Внешние схемы и таблицы — объекты в базе данных Redshift, которые ссылаются на файлы в S3. Они создаются с помощью команды
CREATE EXTERNAL SCHEMAиCREATE EXTERNAL TABLE.
Процесс выполнения запроса
- Пользователь отправляет SQL-запрос к кластеру Redshift.
- Оптимизатор запросов Redshift анализирует, какие данные находятся локально, а какие — в S3.
- Часть запроса, относящаяся к данным в S3, передаётся на Spectrum-слой.
- Spectrum-слой параллельно сканирует файлы в S3, используя метаданные (например, из каталога AWS Glue или Hive Metastore) для фильтрации по разделам (partition pruning) и минимизации объёма сканируемых данных.
- Spectrum применяет предикаты (условия WHERE) непосредственно к файлам, считывая только необходимые столбцы (columnar projection).
- Отфильтрованные и агрегированные данные возвращаются в кластер Redshift, где они могут быть объединены с локальными таблицами.
- Конечный результат отправляется пользователю.
Ключевые характеристики
Форматы данных и сжатие
Spectrum поддерживает столбцовые форматы (Parquet, ORC) и строчные (Avro, JSON, CSV, TSV). Использование столбцовых форматов значительно повышает производительность, так как позволяет считывать только нужные столбцы. Рекомендуется использовать сжатие (Snappy, Gzip, LZO) для уменьшения объёма передаваемых данных.
Разделение данных (Partitioning)
Для ускорения запросов данные в S3 могут быть организованы по разделам (например, по дате: /year=2023/month=01/day=15/). Spectrum автоматически определяет разделы на основе структуры каталогов и использует их для фильтрации (partition pruning), что сокращает объём сканирования.
Безопасность
- Шифрование: поддерживается шифрование данных в покое (SSE-S3, SSE-KMS) и в транзите (TLS).
- Аутентификация и авторизация: доступ к данным в S3 контролируется через политики AWS Identity and Access Management (IAM). Пользователи Redshift получают доступ через роли IAM, привязанные к кластеру.
- Маскирование данных: возможно через стандартные механизмы Redshift (например, представления).
Производительность
- Автомасштабирование: Spectrum-слой автоматически выделяет необходимое количество вычислительных ресурсов в зависимости от сложности запроса и объёма данных.
- Параллелизм: запросы выполняются параллельно на множестве узлов Spectrum.
- Кэширование: результаты сканирования могут кэшироваться на уровне кластера Redshift для повторяющихся запросов.
Применение
Redshift Spectrum используется в сценариях, где требуется анализировать большие объёмы данных, которые нецелесообразно или невозможно загрузить в кластер Redshift:
- Озеро данных (Data Lake): организации хранят неструктурированные и полуструктурированные данные в S3, а Spectrum позволяет выполнять к ним SQL-запросы без создания отдельного хранилища.
- Архивные данные: исторические данные, которые редко запрашиваются, остаются в S3, а Spectrum используется для периодических отчётов.
- Гибридные сценарии: данные, активно используемые для оперативной аналитики, хранятся в кластере Redshift, а редко используемые или временные данные — в S3. Spectrum объединяет их в одном запросе.
- ETL-пайплайны: предварительная обработка данных (фильтрация, агрегация) может выполняться средствами Spectrum перед загрузкой в Redshift.
Ограничения
- Задержка: запросы к данным в S3 выполняются медленнее, чем к локальным таблицам Redshift, из-за сетевых задержек и необходимости сканирования файлов.
- Отсутствие транзакций: внешние таблицы не поддерживают операции INSERT, UPDATE, DELETE. Данные в S3 считаются неизменяемыми (immutable) с точки зрения Redshift.
- Сложность оптимизации: производительность сильно зависит от формата файлов, организации разделов и объёма сканируемых данных. Неоптимальная структура может привести к высоким затратам.
- Стоимость: оплачивается объём сканированных данных в S3 (по тарифам Spectrum) и время работы кластера Redshift. При частых запросах к большим объёмам данных затраты могут быть значительными.
Сравнение с другими сервисами AWS
| Характеристика | Redshift Spectrum | Amazon Athena | Amazon EMR |
|---|---|---|---|
| Тип запросов | SQL (через Redshift) | SQL (серверный) | SQL, Python, Java, Scala |
| Управление инфраструктурой | Требуется кластер Redshift | Бессерверный | Требуется кластер EMR |
| Интеграция с Redshift | Прямая | Отдельная | Через Hive/Spark |
| Производительность | Высокая (с кэшированием) | Средняя | Высокая (настраиваемая) |
| Стоимость | Зависит от объёма сканирования и времени кластера | Зависит от объёма сканирования | Зависит от времени работы кластера |
Источники:
- Документация Amazon Redshift: «Using Amazon Redshift Spectrum to query external data»
- Документация Amazon Web Services: «Amazon Redshift Spectrum Pricing»
- AWS Whitepaper: «Big Data Analytics Options on AWS»
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →