Глава 9Озера данных (Data Lake)
Сам термин «озеро» был придуман по аналогии с водоемом – в него стекаются данные из самых разных источников. И при грамотно выстроенной работе отдела аналитики из этого «водоема» можно извлечь настоящие сокровища.
Почему компании выгодно хранить информацию в Data Lake? Вот лишь несколько преимуществ озер данных:
• Возможность собирать в одном месте разрозненные данные из разных отделов. Часто информация в организациях хранится по отдельности у каждого подразделения, а перенести все материалы в одну базу сложно или даже невозможно технически. Озера успешно решают этот вопрос.
• Поле для экспериментов. Наличие большого объема информации из разных источников позволяет аналитикам «развернуться» в направлении поиска закономерностей и неожиданных связей.
• Централизация и прозрачность данных. В озерах информация собирается в одном месте, ее можно детализировать и находить что-то ценное как для каждого отдела компании, так и для бизнеса в целом. При этом стираются барьеры между отдельными подразделениями.
• Доступность. Об этом мы уже говорили ранее: обслуживание озер данных обходится дешевле, чем баз данных, из-за того, что информация не нуждается в предварительной обработке. Кроме того, стартовать можно с «мини-озер» и постепенно наращивать мощность. Это удобно даже для среднего и малого бизнеса.
В чем преимущества озер по сравнению с хранилищами данных?
Во-первых, в озерах записи и вычислительные ресурсы разделены: файлы, собранные в одном месте, находятся отдельно, а вычислительные мощности включаются и выключаются по мере необходимости. В хранилищах данных информация напрямую связана со встроенным в него сервером.
Плюсы такого подхода:
• Экономия. В период простоя вычислительные сервера можно отключить, тем самым снизив расходы на их использование.
• Автономность. Несколько отделов могут одновременно использовать одни и те же данные.
• Свобода масштабирования. Для работы с озером данных можно либо добавлять, либо уменьшать количество модулей памяти и серверов с учетом нагрузки.
Во-вторых, в «озерах» хранятся так называемые «сырые» (необработанные) данные, тогда как в хранилищах информация, попадая из первичных источников, преобразуется и загружается в таблицы. И именно структурированные данные зачастую нужны бизнес-пользователям.
Чем же удобно хранение информации в «озерах»? Тем, что в любой момент нужные сведения можно получить из исходных данных. К тому же можно изменить метод обработки, добавить необходимые показатели, которые не вошли в первоначальную выборку. В случае с хранилищами вся несохраненная, «сырая» информация будет утрачена, потому что данные хранят по определенной схеме, которая жестко фиксирует состав полей.
В-третьих, информация в «озерах» может храниться в любом объеме, и для пользователей доступ к ней можно открыть одновременно из любых точек мира.
Озера данных в первую очередь необходимы компаниям, в которых много отдельных команд. Например, Amazon ранее собирал информацию из нескольких тысяч разных источников. Она хранилась в десятках БД, что создавало массу неудобств и порождало путаницу.
После того как в компании появилось озеро данных, сложность была решена. Все материалы стали храниться в одном месте, а специалисты смогли брать нужные данные и обрабатывать их с помощью разных инструментов и технологий.
Благодаря озеру данных аналитики компании теперь могут строить сверхточные прогнозы: например, сколько ящиков определенного размера нужно для отправки посылок в конкретном регионе в январе.
Еще один пример уже из моей практики.
Крупная европейская телекоммуникационная компания пригласила меня с коллегами помочь им с инжинирингом данных. Они занимаются продвижением приложения «виртуальный оператор», что-то вроде Skype. Функционал похожий: онлайн-звонки на разные номера через созданный виртуальный мобильный номер.
Вся информация у них хранилась в классическом озере данных. То есть провайдер услуг предоставлял информацию по совершенным звонкам и складывал их в S3 bucket на платформе AWS. При этом данные не были структурированы – просто лежали большим пластом отдельных файлов.
Какую задачу поставили перед нами? Используя имеющееся озеро данных, построить аналитическое хранилище, которое позволит подсчитать:
• ежедневное количество входящих звонков;
• ежедневное количество исходящих звонков;
• ежедневное количество пропущенных звонков.
Для этого мы использовали технологии AWS Glue: создали скрипты, которые позволили взять информацию из S3 bucket и сложить в колоночную базу от Amazon. И данные начали «работать», предоставляя пользователям удобные отчеты в Looker (система класса BI для самообслуживания по задачам аналитики).
Как работает озеро данных?
Архитектура озера данных состоит из пяти ключевых компонентов (рис. 15):
Рис. 15. Архитектура озера данных
• Прием данных (Data ingestion): получение данных из различных источников на носитель, где они могут быть доступны для использования и анализа.
• Хранение (Data storage): магнитный, оптический или механический носитель, на котором хранятся цифровые данные.
• Безопасность (Data security): защита информации на протяжении всего срока ее службы от нежелательного доступа, манипуляций или кражи.
• Происхождение данных (Data lineage): в озере хранится информация о поступлении, изменении или перемещении данных, включая ту, которая была преобразована.
• Управление данными (Data governance): процесс управления доступностью, качеством и безопасностью информации в бизнес-системах на основе внутренних стандартов и правил. Эффективное управление данными гарантирует, что они не противоречивы, надежны и не будут обработаны неправильно.
Все эти компоненты есть у нескольких облачных сервисов, с которыми компании могут продуктивно работать:
1. Google Data Lake;
2. Веб-сервисы Amazon – озеро данных AWS;
3. Microsoft Azure Data Lake;
4. Snowflake.
Подводные камни в работе с озерами данных
Помимо очевидных преимуществ, в работе с озерами данных есть и свои сложности.
Одна из них – увеличение объема работы у инженеров данных. Ведь данные в озере не структурированы, их слишком много. Кроме того, невозможно получить информацию от других людей, работавших с файлами, поскольку в озере нет возможности увидеть выводы предыдущих аналитиков.
Если компания не умеет качественно работать с информацией, есть шанс, что озеро превратится в «болото».
Это может произойти, если в озере:
Нет метаданных, или тегов – информации, которая описывает файлы, другие данные и помогает искать их. Именно она создает многоуровневую структуру, не позволяющую перегружать озеро данных.
Хранятся нерелевантные данные, собранные бесцельно, не имеющие документации, происхождения которых никто не знает или не помнит. Сюда же можно отнести и отсутствие регулярной очистки данных от ошибок, дубликатов, приводящее к искажению информации и неверной ее трактовке.
Отсутствует управление данными: в компании нет понимания, как обращаться с информацией, кто должен ее обрабатывать, куда она направляется и так далее. Нет людей, ответственных за доступ к данным, их хранение и использование.
Нет автоматизированных процессов для поддержания данных. Автоматизация позволяет обрабатывать все данные одинаковыми способами.
Дома у озер данных (Lakehouse)
С тех пор как компании начали собирать большие объемы данных из различных источников, архитекторы задумались о единой системе хранения информации. Именно так и появились озера данных, как я и говорил ранее.
Но несмотря на то, что озера подходят для хранения данных, им не хватает некоторых важных функций. Например, возможности одновременного чтения и записи информации несколькими пользователями.
Часто крупные организации используют сразу несколько концепций: озера, хранилища, базы данных. Все это создает дополнительные трудности и приводит к задержкам,
поскольку специалистам по работе с информацией приходится постоянно перемещать файлы между разными системами или копировать их.
Рис. 16. Дом у озера – система, которая объединяет лучшее от озер и хранилищ
Чтобы справиться с этой проблемой, специалисты разработали новую систему хранения информации – дом у озера данных (Lakehouse). Это новая открытая архитектура, соединяющая в себе лучшее от озер и хранилищ: дешевизну первых и структурность вторых.
Рассмотрим основные характеристики домов у озер данных:
• Поддержка транзакций. В доме у озера пользователи могут одновременно читать и записывать данные.
• Поддержка BI[3]. Озерные дома позволяют использовать инструменты BI непосредственно на исходных данных. Это уменьшает затраты на использование двух копий данных как в озере, так и в хранилище.
• Хранение отдельно от вычислений. Для хранения используются отдельные кластеры, поэтому дома у озера способны масштабироваться для большего числа одновременных пользователей и разного объема данных.
• Открытость. Используемые форматы хранения открыты и стандартизированы. Например, используется Parquet, чтобы различные инструменты и движки, включая библиотеки машинного обучения и языки Python/R, могли эффективно обращаться к данным напрямую.
• Поддержка различных типов данных. Дома у озер можно использовать для хранения, уточнения, анализа информации и доступа к разным типам данных: изображениям, видео, аудио, полуструктурированным записям и документам.
• Поддержка различных рабочих нагрузок, в том числе машинного обучения, алгоритмов обработки данных и аналитики.
• Потоковая передача данных. Устраняет необходимость в отдельных системах, предназначенных для обслуживания приложений, работающих с информацией в реальном времени.
Это ключевые преимущества домов у озера: простота, скорость, экономичность и способность обслуживать различные приложения для работы с данными.
Итак, мы с вами детально прошлись по основе основ – архитектуре данных. Разобрались, как и где хранится информация, необходимая компании. Изучили множество видов баз данных, хранилищ и даже озер. Теперь вы точно знаете, что выбрать для своего бизнеса. А теперь поговорим о том, как быстро и эффективно эти самые данные обрабатывать.