Доступ к данным осуществляют через REST API. Стандартом де-факто доступа к данным стал протокол S3, впервые предложенный Amazon Web Services для своего Object Storage, поэтому, говоря S3, часто подразумевают любое объектное хранилище (не только Amazon и даже не обязательно поддерживающее протокол S3).
ТарификацияВажный плюс облаков для конечного потребителя – гибкая тарификация. Обычно клиент платит за объем хранимых данных и за трафик. У обеих метрик единица измерения – гигабайты. Это означает, что нет необходимости заранее закупать петабайтные дисковые массивы и оплачивать их содержание. Для хранения архива on-prem мы закупили бы СХД, достаточно объемную для хранения архивов, скажем, за год, и впоследствии докупали бы диски, увеличивая объем раз в полгода-год. В облаке же мы платим только за те данные, которые реально храним прямо сейчас.
Доступ к даннымДоступ к данным, хранящимся в S3-хранилище, весьма вариативен. Существуют такие способы:
- REST API. Реализуются интуитивные для файловой системы методы: вернуть список объектов, положить новый объект, получить объект, скопировать, удалить. Однако некоторые облачные вендоры поддерживают также S3 select: если файлы хранятся в формате json, csv или parquet, поддерживается усеченный SQL c агрегациями и фильтрацией.
- FUSE. Объектное хранилище может быть примонтировано к машине как файловая система, и впоследствии взаимодействовать с ним можно так же, как с дисками.
- Клиентские приложения, например, S3cmd или AWS (функционал последнего шире, чем взаимодействие с S3). Реализуются команды put, get, ls, cp и так далее.
- Многие MPP-решения имеют S3-коннекторы. Например, в Greenplum можно создавать внешнюю таблицу с данными, хранящимися в S3; Hadoop может работать с S3 так же, как с HDFS, и, соответственно, sql-движки (Hive, Impala, Trino и другие) могут работать со структурированными данными в S3.
Управляемые сервисыMPPВ качестве платформы для DWH или Data Lake может быть выбрана одна из MPP-систем, часто разворачиваемых on-prem. Облачный вендор не только предоставляет мощности для этих систем, но забирает на себя:
- автоматическое конфигурирование,
- поддержку средств мониторинга,
- резервное копирование и восстановление,
- шифрование трафика.
В облаке могут как сервис предлагаться различные MPP. Облачный вендор может предоставить как сервис свое решение (например, Oracle Cloud Infrastructure предоставляет
Oracle Exadata). Но более подробно хочется остановиться на двух решениях – Hadoop и Greenplum.
HadoopПродукты экосистемы Apache Hadoop подходят для построения Data Lake и широко применяются on-prem. Часто используют компоненты:
- HDFS – для хранения горячих данных,
- Hive, Impala, SparkSQL – для доступа к данным и ELT,
- Spark – для ELT и аналитики,
- Sqoop – для интеграции с базами данных.
Важное преимущество Hadoop – горизонтальная масштабируемость. Оно эффективно может быть использовано в облаке. Для HDFS разворачивается отдельный data-кластер, который предполагается расширять только при необходимости. А вот для расчетных задач, для запуска MapReduce- и Spark-джобов можно разворачивать compute-кластеры. Эти кластеры легко как увеличить в размерах, так и уменьшить.
Масштабирование кластеров может быть автоматизировано и основываться на проценте загрузки процессорных ядер или на количестве активных YARN-контейнеров. Для расчета витрин могут применяться в том числе и
временные кластеры, создаваемые непосредственно перед загрузкой данных и удаляемые сразу после. Такая масштабируемость позволяет сэкономить на удаляемых нодах. Кроме того, такой подход повышает “смелость” ad-hoc аналитики: если для проведения какого-то анализа необходимо докупать железо в дата-центр своей организации, то аналитику придется долго и сложно согласовывать бюджет. Если же для того же самого анализа нужно арендовать на недельку даже очень мощный spark-кластер, то согласование значительно упрощается.
GreenplumMPP-системы на основе PostgreSQL применяются достаточно широко, в том числе в облаках. Здесь можно отметить Greenplum, Arenadata DB, ApsaraDB AnalyticDB for PostgreSQL. Задачи по обслуживанию вендор может решать не только грамотным использованием стандартного набора утилит, но и
правкой кода продукта, ведь Greenplum – это активно развиваемое open-source-решение.
От экосистемы Hadoop Greenplum выгодно отличает поддержка ACID-транзакции. Конечно, использование ACID-механизмов Greenplum требует аккуратности в подходах к обновлению данных. Но в сложносочиненных хранилищах, где одна и та же таблица может использоваться одновременно как приемник данных в одном процессе и как источник данных в другом, без этого обойтись трудно.
В отличие от Hadoop, в Greenplum мы не можем просто отключить половину сегмент-хостов и рассчитывать на то, что расплатимся за это лишь уменьшением производительности. Нет, такие действия приведут еще и как минимум к недоступности данных. Но вот расширение кластера Greenplum в облаке выглядит все еще более простой процедурой, чем on-prem. Для расширения кластера инженерам поддержки нужно лишь:
- снять бэкап (это в облаке должно быть простой, быстрой и регулярной процедурой),
- выделить в кластер дополнительные хосты,
- развернуть бэкап на обновленном кластере.
Дополнительные сервисыХранилище не может существовать в вакууме: оно будет просто бесполезно. Коротко остановлюсь на дополнительном инструментарии, который предоставляют в облаках:
- сервисы для логирования с автоматическим ротированием логов и управлением доступом;
- СУБД наподобие MySQL или PostgreSQL для хранения метаданных. Все как обычно в облаке: резервное копирование, автоматическое обслуживание, отказоустойчивость;
- СУБД для презентационного слоя, например, ClickHouse;
- инструменты визуализации от вендора;
- сервисы для оркестрирования процессов;
- инструменты интеграции;
- инструменты Data Governance;
- виртуальные машины, чтобы установить то ПО, которого не хватает.
Облачное хранилищеЧтобы в полной мере использовать преимущества облачного подхода в построении DWH, MPP-система должна отвечать множеству требований:
- обеспечивать гибкое разграничение доступа,
- масштабировать compute-мощности и экономно их использовать,
- иметь развитый SQL-диалект,
- проводить охлаждение старых данных,
- дешево хранить бэкапы и обеспечивать быстрый доступ к ним,
- практически незаметно для пользователя обновляться и быть доступной 24/7,
- шифровать данные и трафик.
В полной мере всему этому набору требований ни одна из изначально заточенных под on-prem MPP-систем не соответствует – по крайней мере из перечисленных выше. Поэтому появились решения, заточенные специально на использование в облаках. О двух из них я скажу ниже: это Snowflake и Databricks.
SnowflakeSnowflake – это не управляемый сервис в каком-то из облаков и тем более не ПО, которое можно развернуть по лицензии. Это отдельный сервис, который позволяет пользователю выбрать региональный дата-центр и облачного вендора для размещения инфраструктуры. На выбор: Microsoft Azure, Amazon Web Services или Google Cloud. После этого пользователю доступны загрузка и хранение данных и доступ к ним посредством SQL – через веб-интерфейс или JDBC- или ODBC-драйвер.
Немного об устройстве Snowflake. В нем разделены хранение и обработка данных. Клиент платит отдельно за хранение и отдельно за их обработку, а также за сетевой трафик.