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

Amazon Athena

Amazon Athena — это интерактивный сервис запросов, основанный на бессерверной архитектуре, предназначенный для анализа данных, хранящихся в облачном хранилище Amazon Simple Storage Service (Amazon S3). Сервис позволяет выполнять SQL-запросы к данным без необходимости управления инфраструктурой, настройки серверов или загрузки данных в отдельную базу данных. Athena работает по принципу «плати за запрос», взимая плату только за объём данных, просканированных в ходе выполнения запроса.

История и развитие

Сервис Amazon Athena был анонсирован компанией Amazon Web Services (AWS) на конференции re:Invent в 2016 году и стал общедоступным в том же году. Его появление было связано с растущей потребностью в инструментах, позволяющих анализировать большие объёмы данных, хранящихся в облачных объектных хранилищах, без необходимости создавать и поддерживать дорогостоящие кластеры обработки данных (например, Hadoop или Spark).

Изначально Athena поддерживал только запросы к данным в форматах CSV, JSON, Parquet и ORC, используя для выполнения запросов движок Presto (позднее заменённый на Trino). В 2019 году была добавлена поддержка работы с данными в форматах Avro и Apache Hudi. В 2020 году AWS представила возможность использования Athena для анализа данных в Apache Iceberg, а также интеграцию с AWS Glue Data Catalog для управления метаданными.

В 2021 году был анонсирован Athena Engine Version 3, который значительно повысил производительность и расширил функциональность, включая поддержку оконных функций, рекурсивных запросов и улучшенную обработку сложных типов данных. В последующие годы сервис получил функции автоматического масштабирования, улучшенную интеграцию с AWS Lake Formation для управления доступом и возможность выполнения запросов к данным в других источниках, таких как Amazon Redshift, Amazon DynamoDB и реляционные базы данных через федеративные запросы.

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

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

Amazon Athena является полностью бессерверным сервисом. Это означает, что пользователю не требуется создавать, настраивать или масштабировать вычислительные ресурсы. AWS самостоятельно управляет инфраструктурой, необходимой для выполнения запросов, включая кластеры серверов, распределение нагрузки и обработку отказов. Пользователь платит только за фактически использованные ресурсы — объём данных, просканированных в каждом запросе.

Движок запросов

Athena использует распределённый SQL-движок на основе Trino (ранее Presto), оптимизированный для аналитических запросов к большим объёмам данных. Движок разбивает запрос на множество подзадач, которые выполняются параллельно на нескольких узлах. Это позволяет обрабатывать терабайты и петабайты данных за секунды или минуты.

Каталог данных

Для хранения метаданных (схем таблиц, типов данных, расположения файлов) Athena использует AWS Glue Data Catalog. Пользователь может создавать таблицы вручную, используя операторы DDL (Data Definition Language), или автоматически регистрировать их через AWS Glue Crawlers, которые сканируют хранилище S3 и определяют структуру данных.

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

Поддержка форматов данных

Athena поддерживает широкий спектр форматов данных:

  • Структурированные: CSV, TSV, JSON.
  • Колоночные: Parquet, ORC, Avro.
  • Табличные форматы: Apache Iceberg, Apache Hudi, Delta Lake (через интеграцию с AWS Glue).
  • Неструктурированные: текстовые файлы, логи.

Федеративные запросы

С помощью Athena Federated Query можно выполнять SQL-запросы к данным, хранящимся не только в S3, но и в других источниках: Amazon Redshift, Amazon DynamoDB, Amazon RDS, Amazon DocumentDB, а также к внешним базам данных через JDBC/ODBC-коннекторы. Это позволяет объединять данные из разных систем в одном запросе.

Управление доступом

Athena интегрируется с AWS Identity and Access Management (IAM) для управления доступом к данным. Дополнительно, с помощью AWS Lake Formation можно настроить детализированные политики доступа на уровне строк и столбцов (row-level и column-level security).

Автоматическое сжатие и оптимизация

Сервис автоматически сжимает результаты запросов в формате GZIP или Snappy, что снижает затраты на передачу данных. Также поддерживается автоматическое создание и обновление статистик для оптимизации планов выполнения запросов.

Применение

Анализ логов и журналов

Одним из наиболее распространённых сценариев использования Athena является анализ логов веб-серверов, системных журналов (например, AWS CloudTrail, VPC Flow Logs, ELB Access Logs) и данных телеметрии. Пользователи могут выполнять SQL-запросы к этим данным без необходимости их предварительной обработки или загрузки в базу данных.

Бизнес-аналитика и отчётность

Athena часто используется в качестве бэкенда для инструментов бизнес-аналитики (BI), таких как Amazon QuickSight, Tableau, Power BI или Looker. Сервис позволяет выполнять сложные агрегатные запросы к большим наборам данных, формируя отчёты и дашборды в реальном времени.

Обработка данных в озёрах данных

В архитектуре озёр данных (data lake) Athena выступает как слой запросов, позволяя аналитикам и инженерам данных исследовать и анализировать данные, хранящиеся в S3, без необходимости копировать их в отдельное хранилище. Это снижает затраты на хранение и упрощает управление данными.

Интеграция с ETL-процессами

Athena может использоваться в конвейерах обработки данных (ETL) для трансформации данных. Например, с помощью оператора CREATE TABLE AS SELECT (CTAS) можно преобразовывать данные из одного формата в другой (например, из CSV в Parquet) или выполнять очистку и агрегацию данных.

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

Зависимость от объёма сканируемых данных

Основным фактором стоимости Athena является объём данных, просканированных в ходе выполнения запроса. При неоптимальной структуре данных (например, хранение в несжатых CSV-файлах без партиционирования) затраты могут быть высокими. Для снижения стоимости рекомендуется использовать колоночные форматы (Parquet, ORC) и правильно настраивать партиционирование.

Отсутствие поддержки транзакций

Athena не является транзакционной базой данных. Он не поддерживает операции вставки, обновления или удаления отдельных строк (за исключением операций с таблицами Apache Iceberg, Hudi и Delta Lake, которые предоставляют ограниченную поддержку транзакций). Сервис ориентирован исключительно на аналитические запросы.

Задержка выполнения

Хотя Athena оптимизирован для быстрых запросов, время выполнения может варьироваться от нескольких секунд до нескольких минут, особенно для сложных запросов к большим наборам данных. Это делает его менее подходящим для сценариев, требующих ответа в реальном времени (менее 1 секунды).

Ограничения по синтаксису SQL

Athena использует диалект SQL на основе Trino, который имеет некоторые отличия от стандартного SQL. Например, отсутствует поддержка хранимых процедур, триггеров и функций, доступных в реляционных СУБД. Также существуют ограничения на размер одного запроса (до 256 КБ) и количество одновременно выполняемых запросов (по умолчанию до 20, но может быть увеличено по запросу).

Сравнение с альтернативами

Amazon Redshift Spectrum

Redshift Spectrum — это функция сервиса Amazon Redshift, позволяющая выполнять запросы к данным в S3. В отличие от Athena, Redshift Spectrum требует наличия кластера Redshift, но предоставляет более мощные возможности по управлению данными, включая поддержку транзакций, материализованных представлений и сложных оптимизаций. Athena, в свою очередь, не требует настройки инфраструктуры и подходит для ad-hoc-запросов.

Google BigQuery

BigQuery — это серверный аналитический сервис от Google Cloud, аналогичный Athena. Оба сервиса не требуют управления инфраструктурой и используют SQL для запросов. Однако BigQuery предлагает более продвинутые функции, такие как автоматическое управление производительностью, встроенные машинные модели и поддержку потоковых данных. Athena же более тесно интегрирован с экосистемой AWS и позволяет работать с данными, хранящимися в S3, без их перемещения.

Presto и Trino

Athena использует Trino в качестве движка запросов, но предоставляет его как управляемый сервис. Пользователи, желающие иметь полный контроль над конфигурацией и производительностью, могут развернуть собственный кластер Presto или Trino на Amazon EMR или EC2. Однако это требует значительных усилий по администрированию и масштабированию.

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

  • Amazon Athena был назван в честь древнегреческой богини мудрости и стратегии.
  • Сервис позволяет выполнять запросы к данным, хранящимся в любом регионе AWS, где доступен S3, но для минимизации задержек рекомендуется хранить данные и выполнять запросы в одном регионе.
  • Athena поддерживает работу с данными в формате Apache Iceberg, что позволяет выполнять операции вставки, обновления и удаления строк, а также управлять версиями данных.
  • В 2022 году AWS представила возможность использования Athena для анализа данных в реальном времени через интеграцию с Amazon Kinesis Data Analytics.

Источники

  • Amazon Web Services. «Amazon Athena Documentation». AWS Documentation.
  • Amazon Web Services. «Amazon Athena User Guide». AWS Documentation.
  • Trino Software Foundation. «Trino Documentation». Trino.io.
  • Amazon Web Services. «What is Amazon Athena?». AWS re:Invent 2016 Presentation.
  • Amazon Web Services. «Amazon Athena Engine Version 3». AWS What's New.

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

На главную BFOmetr →