Десять минут, чтобы понять Apache Druid

Большие данные

Подпишитесь на официальный аккаунт MageByte и поставьте звездочку, чтобы получать последние новости. Фон официальной учетной записи ответил «Jiaqun», чтобы войти в группу технического обмена, чтобы получить больше технического роста.

Введение: Apache Druid — это платформа аналитических данных, которая объединяет характеристики базы данных временных рядов, хранилища данных и системы полнотекстового поиска. В этой статье вы кратко ознакомитесь с функциями Druid, сценариями использования, техническими особенностями и архитектурой. Это поможет вам выбрать решения для хранения данных, получить представление о хранилище Druid, получить представление о хранении временных рядов и многое другое.

Обзор

  • Современная облачная и потоковая аналитическая база данных.

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

  • Простая интеграция с существующими конвейерами данных

    Druid может передавать данные из шины сообщений (например, Kafka, Amazon Kinesis) или пакетно загружать файлы из озера данных (например, HDFS, Amazon S3 и других подобных источников данных).

  • Производительность в 100 раз выше, чем у традиционных решений

    Тесты производительности Druid для приема и запроса данных значительно превосходят традиционные решения.

    Архитектура Druid включает в себя лучшие функции хранилищ данных, баз данных временных рядов и поисковых систем.

  • Разблокируйте новые рабочие процессы

    Druid открывает новые методы запросов и рабочие процессы для Clickstream, APM (система управления производительностью приложений), цепочки поставок (цепочки поставок), сетевой телеметрии, цифрового маркетинга и других форм сценариев, управляемых событиями. Druid создан для быстрых специальных запросов к оперативным и историческим данным.

  • Развернуто на AWS/GCP/Azure, гибридном облаке, k8s и арендованных серверах

    Druid можно развернуть в любой среде *NIX. Будь то локально или в облаке. Развернуть Druid очень просто: увеличивайте или уменьшайте, добавляя или удаляя сервисы.

сцены, которые будут использоваться

Apache Druid подходит для сценариев с высокими требованиями к извлечению данных в реальном времени, высокопроизводительным запросам и высокой доступности. Поэтому Druid часто используется как аналитическая система с богатым графическим интерфейсом или как серверная часть для высокопараллельного API, требующего быстрой агрегации. Друид больше подходит для событийно-ориентированных данных.

Более распространенные сценарии использования:

  • Анализ посещаемости (веб- и мобильная аналитика)

  • Анализ контроля рисков

  • Анализ сетевой телеметрии (мониторинг производительности сети)

  • Хранение метрик сервера

  • Анализ цепочки поставок (производственные показатели)

  • Показатели производительности приложений

  • Система бизнес-аналитики/онлайн-анализа в реальном времени OLAP

Эти сценарии использования подробно проанализированы ниже:

Активность и поведение пользователей

Друид часто используется в данных потока кликов, потока доступа и потока активности. Конкретные сценарии включают в себя: измерение вовлеченности пользователей, отслеживание данных A/B-тестирования для запуска продуктов и понимание того, как пользователи их используют. Druid может выполнять точные и приблизительные расчеты пользовательских метрик, таких как уникальные метрики. Это означает, что такие показатели, как количество активных пользователей за день, можно приблизительно вычислить за одну секунду (со средней точностью 98%), чтобы увидеть общие тенденции, или точно рассчитать для представления заинтересованным сторонам. Druid можно использовать для «анализа воронки», чтобы измерить, сколько пользователей совершают одно действие, а не другое. Это полезно для отслеживания регистрации пользователей продукта.

сетевой поток

Druid часто используется для сбора и анализа данных о сетевых потоках. Druid используется для управления разделением потоковых данных и объединением их с произвольными атрибутами. Druid способен извлекать большое количество записей сетевого потока и может быстро объединять и сортировать десятки атрибутов во время запроса, что облегчает анализ сетевого потока. Эти атрибуты включают некоторые основные атрибуты, такие как IP-адрес и номер порта, а также некоторые дополнительные расширенные атрибуты, такие как географическое положение, служба, приложение, устройство и ASN. Druid может работать с нефиксированными схемами, что означает, что вы можете добавлять любые свойства по своему усмотрению.

цифровой маркетинг

Druid часто используется для хранения и запроса данных онлайн-рекламы. Эти данные, как правило, от поставщиков рекламных услуг, имеют решающее значение для измерения и понимания эффективности рекламной кампании, рейтинга кликов, коэффициента конверсии (коэффициента потребления) и других показателей.

Изначально Druid разрабатывался как мощное пользовательское аналитическое приложение для рекламных данных. Что касается хранения рекламных данных, у Druid уже есть большое количество производственных практик, и большое количество пользователей по всему миру хранят данные уровня PB на тысячах серверов.

Управление производительностью приложений

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

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

IoT и метрики устройств

Driud можно использовать в качестве базы данных временных рядов для хранения данных метрик для обработки серверов и устройств. Собирайте машинные данные в режиме реального времени, чтобы выполнять быстрый специальный анализ для измерения производительности, оптимизации аппаратных ресурсов и выявления проблем.

В отличие от многих традиционных баз данных временных рядов, Druid по сути является аналитическим механизмом. Druid сочетает в себе концепции баз данных временных рядов, баз данных столбчатой ​​аналитики и поисковых систем. Он поддерживает секционирование по времени, столбчатое хранилище и поисковые индексы в одной системе. Это означает, что запросы на основе времени, числовые агрегации и поисковые фильтры выполняются очень быстро.

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

OLAP и бизнес-аналитика

Druid часто используется в сценариях бизнес-аналитики. Компании развертывают Druid для ускорения запросов и улучшения приложений. В отличие от движков SQL на основе Hadoop (таких как Presto или Hive), Druid предназначен для высокой степени параллелизма и запросов менее чем за секунду, улучшая интерактивные запросы данных через пользовательский интерфейс. Это делает Druid более подходящим для реального анализа визуального взаимодействия.

Технологии

Apache Druid — это механизм распределенного хранения данных с открытым исходным кодом. Основной дизайн Druid включает в себя идеи из OLAP/аналитических баз данных, баз данных временных рядов и поисковых систем для создания единой системы для широкого спектра вариантов использования. Druid объединяет основные функции этих трех систем в уровень приема Druid (уровень приема данных), формат хранения (уровень формата хранения), уровень запросов (уровень запросов) и базовую архитектуру (архитектура ядра).

img

Ключевые особенности Друида включают в себя:

  • столбчатое хранилище

    Druid хранит и сжимает каждый столбец данных отдельно. И только конкретные данные, которые необходимо запрашивать, запрашиваются при запросе, и поддерживаются быстрое сканирование, ранжирование и groupBy.

  • Собственный поисковый индекс

    Druid создает инвертированный индекс для строковых значений для быстрого поиска и фильтрации данных.

  • Потоковая передача и пакетный прием данных

    Apache kafka из коробки, HDFS, коннекторы AWS S3, потоковые процессоры.

  • Гибкая схема данных

    Druid изящно адаптируется к изменяющимся схемам данных и вложенным типам данных.

  • оптимизированное разделение по времени

    Druid разумно разделяет данные по времени. В результате запросы Druid, основанные на времени, будут выполняться значительно быстрее, чем традиционные базы данных.

  • Поддержка операторов SQL

    В дополнение к собственным запросам на основе JSON, Druid поддерживает SQL через HTTP и JDBC.

  • Горизонтальная масштабируемость

    Скорость приема данных миллионы в секунду, массивное хранилище данных, запрос менее секунды.

  • Простота в эксплуатации и обслуживании

    Емкость можно увеличивать и уменьшать, добавляя или удаляя серверы. Druid поддерживает автоматическую перебалансировку и аварийное переключение.

прием данных

Druid поддерживает как потоковую передачу, так и пакетный прием данных. Druid обычно подключается к источникам необработанных данных через шину сообщений, такую ​​как Kafka (для загрузки потоковых данных), или через распределенную файловую систему, такую ​​как HDFS (для загрузки больших объемов данных).

Druid хранит необработанные данные в узлах данных в виде сегментов с помощью обработки индексирования. Сегмент представляет собой структуру данных, оптимизированную для запросов.

img

хранилище данных

Как и большинство аналитических баз данных, Druid использует столбчатое хранилище. В зависимости от типа данных (строка, число и т. д.) разных столбцов, Druid использует для них разные методы сжатия и кодирования. Druid также создает разные типы индексов для разных типов столбцов.

Подобно системе поиска, Druid создает инвертированный индекс для строковых столбцов для более быстрого поиска и фильтрации. Подобно базам данных временных рядов, Druid интеллектуально разделяет данные на основе времени для более быстрых запросов, основанных на времени.

В отличие от большинства традиционных систем, Druid может предварительно агрегировать данные перед их приемом. Эта операция предварительной агрегации называется сведением, и она может значительно сократить расходы на хранение.

img

Запрос

Druid поддерживает методы запросов JSON-over-HTTP и SQL. В дополнение к стандартным операциям SQL, Druid также поддерживает большое количество уникальных операций, а набор алгоритмов, предоставляемый Druid, может быстро выполнять подсчет, ранжирование и квантильные вычисления.

img

Архитектура

Druid — это микросервисная архитектура, которую можно понимать как базу данных, разобранную на несколько сервисов. Каждая из основных служб Druid (прием, запрос и координация) может быть развернута отдельно или совместно на обычном оборудовании.

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

Друид может выйти из строя самостоятельно, не влияя на работу других сервисов.

diagram-7

Эксплуатация и техническое обслуживание

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

  • копия данных

    Друид создает несколько копий данных в соответствии с настроенным количеством копий, поэтому отказ одной машины не повлияет на запрос Друида.

  • независимая служба

    Druid четко называет каждую основную услугу, и каждую услугу можно соответствующим образом настроить в соответствии с использованием. Службы могут выходить из строя независимо друг от друга, не влияя на нормальную работу других служб. Например, в случае сбоя службы приема данных новые данные не будут загружены в систему, но можно будет запросить существующие данные.

  • Автоматическое резервное копирование данных

    Druid автоматически создает резервные копии всех проиндексированных данных в файловой системе, которая может быть распределенной файловой системой, такой как HDFS. Вы можете потерять все данные кластера Druid и быстро перезагрузить данные из резервной копии.

  • скользящее обновление

    С последовательными обновлениями вы можете обновлять свой кластер Druid без простоев, которые не зависят от пользователя. Все версии Druid обратно совместимы.

Чтобы узнать о базах данных временных рядов и сравнениях, вы можете перейти к другой статье:

Начальные знания и выбор базы данных временных рядов (TSDB)

Обратите внимание на справочный ответ официального аккаунта и присоединяйтесь к группе. Добро пожаловать в группу, чтобы обсудить и поделиться с нами, и мы дадим отзыв как можно скорее.

公众号