Тяжелый! Фреймворк службы обнаружения больших данных Netflix с открытым исходным кодом Metacat

задняя часть Архитектура открытый источник Elasticsearch
Редактор отдела планирования | Натали
Автор | Аджой Маджумдар, Чжэнь Ли
компилировать | не знать
Редактор | Наталья
Руководство по передовой ИИ:Рад это слышать! Netflix представил совершенно новый проект с открытым исходным кодом! Для Netflix открытый исходный код является конкурентной стратегией как технологической компании. Получите возможность устанавливать свои собственные решения в качестве отраслевых стандартов и передовых практик, создавать технологический бренд Netflix, получать отзывы и получать выгоду от общей экосистемы.

За последние несколько лет Netflix внес много очень успешных проектов с открытым исходным кодом в сообщество открытого исходного кода. Основные компоненты стека микросервисных технологий Netflix в основном имеют открытый исходный код.Теперь все знакомы с шлюзом Zuul, реестром обнаружения служб Eureka, ограничением тока предохранителя Hystrix, конфигурацией Archaius и другими компонентами. Сегодня Netflix открыла свою платформу службы обнаружения больших данных Metacat, чтобы упростить обнаружение, обработку и управление данными. Metacat подробно представлен в технологическом блоге официального веб-сайта Netflix, и передовая линия ИИ компилирует контент следующим образом.

Для более качественного контента, пожалуйста, обратите внимание на паблик WeChat "AI Frontline", (ID: ai-front)

Многие крупные компании имеют большое количество источников данных, их форматы данных неодинаковы, а объем огромен. В Netflix наше хранилище данных состоит из множества больших наборов данных, хранящихся в Amazon S3, Druid, Elasticsearch, Redshift, Snowflake и MySql. Наша платформа поддерживает Spark, Presto, Pig и Hive, которые мы используем для потребления, обработки и создания наборов данных. Из-за разнообразия источников данных мы разработали Metacat, чтобы наша платформа данных могла объединять эти наборы данных в «единое» хранилище данных. Metacat — это служба метаданных, которая позволяет нам обнаруживать, обрабатывать и управлять данными.

Цель

Базовая архитектура платформы больших данных Netflix включает три ключевых сервиса: Execution Service (Genie), Metadata Service и Event Service. Эти идеи не уникальны для Netflix, и такая архитектура необходима при построении инфраструктуры данных, которая может масштабироваться сейчас и в будущем.

Когда мы начали создавать эту платформу много лет назад, мы использовали Pig в качестве языка ETL и Hive в качестве специализированного языка запросов. Поскольку у самой Pig нет системы метаданных, нам казалось идеальным построить схему, которая бы взаимодействовала между ними.

Так родилась Metacat, система, которая действует как уровень доступа к метаданным для всех хранилищ данных и централизованная служба, которую различные вычислительные механизмы могут использовать для доступа к различным наборам данных. Три основные цели Metacat:

  • Объединенное представление системы метаданных

  • Единый API для метаданных набора данных

  • Произвольное хранилище деловых и пользовательских метаданных для наборов данных

Другие компании с большими распределенными наборами данных сталкиваются с аналогичными проблемами. Apache Atlas, слой абстракции данных Twitter и Linkedin’s WhereHows (служба обнаружения данных Linkedin), и это лишь некоторые из них, — все они были созданы для решения схожих проблем, только с их собственными архитектурными решениями.

Metacat

Metacat — это служба объединения, которая предоставляет унифицированный интерфейс REST/Thrift для доступа к метаданным различных хранилищ данных. Хранилище метаданных по-прежнему является источником достоверных данных для метаданных схемы, поэтому Metacat не сохраняет эту часть метаданных. Metacat хранит только метаданные, связанные с бизнесом и определяемые пользователем. Он также публикует всю информацию о наборе данных в Elasticsearch для полнотекстового поиска и обнаружения.

Функции Metacat можно разделить на следующие категории:

  • Абстракция данных и интероперабельность

  • Хранилище деловых и определяемых пользователем метаданных

  • обнаружение данных

  • Аудит изменения данных и уведомление

  • Оптимизация хранилища метаданных Hive

Абстракция данных и интероперабельность

Netflix использует несколько механизмов запросов, таких как Pig, Spark, Presto и Hive, для обработки и использования данных.Внедряя общий уровень абстракции, различные механизмы могут интерактивно обращаться к этим наборам данных.Например: скрипт Pig, который считывает данные из Hive, может считывать данные из таблицы типа столбца Hive и преобразовывать их в тип Pig. При перемещении данных из одного хранилища данных в другое Metacat упрощает процесс, создавая таблицу целевого типа в целевом хранилище данных. Metacat предоставляет набор предопределенных типов данных, которые можно сопоставить с типами данных в различных хранилищах данных. Например, наши инструменты перемещения данных используют описанные выше возможности для перемещения данных из Hive в Redshift или Snowflake.

Сервис Metacat Thrift поддерживает интерфейс Thrift Hive для простой интеграции со Spark и Presto. Таким образом, мы можем агрегировать все изменения метаданных в одной системе и публиковать уведомления об этих изменениях, что позволяет использовать ETL на основе данных. При поступлении новых данных Metacat может уведомить связанные задания о начале работы.

Деловые и пользовательские метаданные

Metacat также хранит бизнес- и пользовательские метаданные для наборов данных. В настоящее время мы используем бизнес-метаданные для хранения информации о подключении (например, источников данных RDS), информации о конфигурации, метрик (разделы и таблицы Hive/S3), а также TTL (время жизни) для таблиц данных и т. д. Как следует из названия, определяемые пользователем метаданные — это метаданные произвольной формы, которые пользователь может определить для своих целей.

Бизнес-метаданные также можно условно разделить на логические метаданные и физические метаданные. Бизнес-метаданные о логических структурах, таких как таблицы, считаются логическими метаданными. Мы используем метаданные для классификации данных и для стандартизации нашей обработки ETL. Владелец таблицы данных может предоставить информацию аудита для таблицы данных в бизнес-метаданных. Они также могут предоставлять значения по умолчанию и правила проверки для столбцов, которые используются при записи данных.

Метаданные фактических данных, хранящихся в таблице или разделе, считаются физическими метаданными. Наш процесс ETL сохраняет метрики данных после выполнения задания для последующей проверки. Эту же метрику можно использовать для анализа стоимости и объема данных. Поскольку две таблицы могут указывать на одно и то же место (например, Hive), важно различать логические и физические метаданные. Две таблицы могут иметь одни и те же физические метаданные, но должны иметь разные логические метаданные.

обнаружение данных

Как потребители данных, мы должны иметь возможность легко находить и просматривать различные наборы данных. Metacat публикует метаданные схемы, а также деловые и пользовательские метаданные в Elasticsearch для полнотекстового поиска. Таким образом, наш SQL-редактор Big Data Portal позволяет использовать автоматические предложения и автозаполнение операторов SQL. Организация наборов данных в каталоги помогает потребителям просматривать информацию, классифицируя данные с помощью тегов в соответствии с различными темами. Мы также используем теги для идентификации таблиц для управления жизненным циклом данных.

Уведомление об изменении данных и аудит

Как центральный шлюз для хранения данных, Metacat будет фиксировать все изменения метаданных и обновления данных. Мы также разработали систему push-уведомлений об изменениях таблиц данных и разделов. В настоящее время мы используем этот механизм для публикации событий в нашем собственном конвейере данных (Keystone), чтобы лучше понять использование данных и тенденции. Мы также публикуем события в Amazon SNS. Мы развиваем архитектуру нашей платформы данных, чтобы она основывалась на событиях. Публикация событий в SNS позволяет другим системам нашей платформы данных «реагировать» на эти метаданные или изменения данных. Например, когда таблица данных удаляется, наша служба администратора хранилища данных S3 может подписаться на эти события и соответствующим образом очистить данные на S3.

Оптимизация хранилища метаданных Hive

Hive Metastore, поддерживаемый RDS, плохо работает при высокой нагрузке. Мы заметили множество проблем с записью и чтением разделов с помощью API хранилища метаданных. По этой причине мы больше не используем эти API. Мы внесли улучшения в коннектор Hive, который напрямую взаимодействует с RDS при чтении и записи разделов. Раньше вызовы Hive Metastore для добавления тысяч разделов часто истекали по тайм-ауту, с новой реализацией это больше не проблема.

Следующий шаг

Мы прошли долгий путь в создании Metacat, но мы еще не достигли цели. Вот некоторые функции, над которыми нам еще нужно поработать, чтобы улучшить их.

  • Управление версиями схем и метаданных для предоставления истории таблиц данных. Например, отслеживайте изменения метаданных для определенного столбца или просматривайте тенденции изменения размера таблицы с течением времени. Возможность видеть информацию о метаданных в какой-то момент в прошлом очень полезна для аудита, отладки, а также для повторной обработки и отката.

  • Предоставляет контекстную информацию для таблицы данных службе происхождения данных. Например, метаданные, такие как частота доступа к таблицам данных, агрегируются в Metacat и публикуются в службе наследования данных для ранжирования критичности таблиц данных.

  • Добавьте поддержку хранилищ данных, таких как Elasticsearch и Kafka.

  • Подключаемая проверка метаданных. Поскольку деловые и пользовательские метаданные имеют произвольную форму, для обеспечения целостности метаданных нам необходимо их проверить. Metacat должен иметь подключаемую архитектуру, которая обеспечивает соблюдение политик проверки перед сохранением метаданных.

Ссылки по теме

Адрес Metacat GitHub:

https://github.com/Netflix/metacat

Оригинальная ссылка:

https://medium.com/netflix-techblog/metacat-making-big-data-discoverable-and-meaningful-at-netflix-56fb36a53520