SlideShare a Scribd company logo
Apache Druid
Apache Druid - Interactive Analytics at Scale
Немного истории
• Druid вышел в свет в 2011 году как продукт компании Metamarket
• Исходный текст был открыт в 2012 году под лицензией GPL
• В 2015 году его создатели отделились от Metamarket, организовали
компанию Imply и он перешел под патронат Apache
• В 2019 году в компанию Imply было инвестировано $30M в рамках
этапа финансирования Series B, а сам Druid был оценен в $350M
Что такое Apache Druid?
Apache Druid - это колоночная база данных семейства OLAP (On-
Line Analytical Processing). Druid спроектирован с целью быстрой
обработки больших, редко изменяющихся массивов данных и
немедленного предоставления доступа к ним.
Druid чаще всего используется в качестве базы данных для случаев
использования, когда важны:
 обработка в режиме реального времени
 быстрая обработка запросов
 высокая работоспособность и отказоустойчивость
Druid лучше всего работает с данными, ориентированными на события.
Что же это Apache Druid?
Apache Druid и САР теорема
CAP теорема:
Consistency - клиент получит консистентные данные или ошибку
Availability - клиент всегда получит результат, хотя бы не консистентный
Partition tolerance - система функционирует, несмотря на потерю сообщений по
сети
A
PС
Druid ?
Особенности Apache Druid
 Колоночное хранение данных
 Мощная параллельная обработка данных
 Возможность работы в режиме реального времени или в
пакетном режиме
 Облачная отказоустойчивая архитектура
 Быстрая фильтрация
 Точные и аппроксимированные вычисления
 Интеграция с существующими сервисами обработки больших
данных
Возможности Apache Druid
 Собственная реализация индекса поиска. Реализует обратный
индекс
 Колоночное хранение данных
 Гибкая схема данных
 Разбиение данных в кластере по временной метке. Ускоряет
запросы с временным параметром
 Поддержка SQL
 Горизонтальное масштабирование
Функционирование Apache Druid
 Репликация данных
 Независимые сервисы
 Автоматическое резервирование данных
 Инкрементные обновления
Типы узлов по ответственности
Мастер:
• Overlord - координирует обработку входных данных
• Coordinator - координирует распределение данных в кластере
Узлы запросов:
• Brokers - обрабатывают запросы чтения данных
• Routers* - единая точка входа для кластера (опционально)
Узлы данных:
• Historicals - хранят данные для запросов
• MiddleManagers - обрабатывают входные данные
Сторонние сервисы
• Metastore - хранилище служебной информации. Реляционная БД:
MySQL или PostgreSQL.
• Apache Zookeeper - сервис координации узлов Druid. Еще
используется как Service Discovery и хранилище метаданных.
• Deep Storage - распределенная файловая система для хранения
данных Druid.
Архитектура
Запись данных
Overlord
Middle Manager
BrokerBrokerPeon
Deep storage
(HDFS, S3)
Hadoop task
Native task
Realtime task
Task
Segments
Middle Manager
BrokerBrokerPeon Segments
Запрос данных
Query Broker
Broker
Broker
Broker
Broker
Middle Manager
Broker
Broker
Historical
Deep storage
(HDFS, S3)
Segments
Streaming
Запрос данных
Coordinator
Query Broker
Broker
Broker
Broker
Broker
Middle Manager
Broker
Broker
Historical
Deep storage
(HDFS, S3)
Segments
Streaming
Архитектура
Логическая структура данных
Datasource1
Timestamp
Dimensions
Metrics
DatasourceN
Timestamp
Dimensions
Metrics
…
Типы Datasource
• Table - создающийся при загрузке данных
• Lookup - соответствует объекту lookup (ключ-значение) и
хранится в специальной схеме lookup
• Union - получается на основе объединения нескольких table
Datasource
• Inline - получается на основе данных, встроенных в запрос
• Query - получается на основе вложенного запроса
• Join - объединение разных типов Datasource
Сегменты данных
Структура сегмента
• Timestamp – каждая строка в Друиде обязана содержать поле времени. Данные
оптимально распределяются по кластеру используя это поле. Запросы чтения
тоже могут быть разбиты по временным интервалам: минуты, часы, дни, и т.д.
• Dimensions – колонки, которые хранятся в неизменном виде. Во время запросов
их можно группировать, фильтровать или применять агрегаторы.
Поддерживаемые типы: одиночные строки, массивы строк, Long, Double или
Float
• Metrics – колонки хранимые в агрегированном состоянии. Они вычисляются во
время Свертки (Rollup). Простые агрегирующие функции: count, sum, min, max,
first, last, и т.д. И приближенные (approximate) структуры: Count distinct
(HyperLogLog, Theta Sketch, Cardinality, HyperUnique), Histograms (Fixed Buckets
Histogram, Approximate Histogram), Quantiles (Quantiles Sketch, Moments Sketch).
Соответственно метрики должны быть целыми или с плавающей точкой числами.
Структура сегмента
Свертка данных (Rollup)
Пример спецификации загрузки данных
"dataSchema": {
"dataSource": "wikipedia",
"timestampSpec": {
"column": "timestamp",
"format": "auto"
},
"dimensionsSpec": {
"dimensions": [
{ "type": "string", "page" },
{ "type": "string", "language" },
{ "type": "long", "name": "userId" }
]
},
"metricsSpec": [
{ "type": "count", "name": "count" },
{ "type": "doubleSum", "name": "bytes_added_sum", "fieldName": "bytes_added" },
{ "type": "doubleSum", "name": "bytes_deleted_sum", "fieldName": "bytes_deleted" }
],
"granularitySpec": {
"segmentGranularity": "day",
"queryGranularity": "none",
"intervals": ["2020-10-21/2020-11-01"]
}
}
Демонстрация
• Установка
• Запуск
• Обработка данных
• Чтение данных
• Просмотр Datasource
• Просмотр сегментов
Применение Apache Druid
 Аналитика интернет серфинга (сlickstream web and mobile)
 Аналитика сетевой телеметрии (мониторинг
производительности)
 Хранилище серверных метрик
 Аналитика цепочек поставок (manufacturing metrics)
 Метрики приложений
 Анализ цифрового маркетинга или рекламы
 Различный BI (business intelligence) / OLAP (online analytical
processing)
Когда использовать Apache Druid?
• Основная операция - добавление данных. Обновления данных происходят
очень редко
• Основной тип запросов – группировка данных. Также есть поддержка
запросов поиска и сканирования
• Ожидаемое время выполнения запроса от 100 мс до нескольких секунд
• Данные содержат временной компонент
• Каждый запрос делается в пределах одной большой таблицы
• Большое количество уникальных данных (high cardinality), по которым
нужны быстрые запросы
• Данные должны быть загружены с больших файлов или источников
больших данных как Kafka, HDFS, Flink, Amazon S3, Amazon Kinesis и т.д.
Один из примеров архитектуры
Кто использует Apache Druid?
Apache Druid и САР теорема
CAP теорема:
Consistency - клиент получит консистентные данные или ошибку
Availability - клиент всегда получит результат, хотя бы не консистентный
Partition tolerance - система функционирует, несмотря на потерю сообщений по
сети
A
PС
Druid
Спасибо

More Related Content

Similar to Druid - Interactive Analytics At Scale

Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Yury Petrov
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
Elizaveta Alekseeva
 
Миграция данных при помощи Feeds
Миграция данных при помощи FeedsМиграция данных при помощи Feeds
Миграция данных при помощи Feeds
zabej
 
Виртуализация Данных: Введение
Виртуализация Данных: ВведениеВиртуализация Данных: Введение
Виртуализация Данных: Введение
Denodo
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
Yuri Yashkin
 
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам? Andrey Korshikov
 
Informatica for Data Warehouse Optimisation and Data Lake Use-cases
Informatica for Data Warehouse Optimisation and Data Lake Use-casesInformatica for Data Warehouse Optimisation and Data Lake Use-cases
Informatica for Data Warehouse Optimisation and Data Lake Use-cases
Ilya Gershanov
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data appliance
CleverDATA
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart
Sergei Seleznev
 
Oracle Big Data proposition
Oracle Big Data propositionOracle Big Data proposition
Oracle Big Data proposition
Andrey Akulov
 
Talksum dec2013 rus_generic
Talksum dec2013 rus_genericTalksum dec2013 rus_generic
Talksum dec2013 rus_generic
dartemiev
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and Hadoop
Alexey Bokov
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
mikhaelsmirnov
 
Решения Oracle для Big Data
Решения Oracle для Big DataРешения Oracle для Big Data
Решения Oracle для Big Data
Andrey Akulov
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
Илья Середа
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015
Alexandr Petrov
 
Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системAndrey Akulov
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeAndrey Korshikov
 

Similar to Druid - Interactive Analytics At Scale (20)

Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
 
Миграция данных при помощи Feeds
Миграция данных при помощи FeedsМиграция данных при помощи Feeds
Миграция данных при помощи Feeds
 
Виртуализация Данных: Введение
Виртуализация Данных: ВведениеВиртуализация Данных: Введение
Виртуализация Данных: Введение
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
 
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
 
апрель
апрельапрель
апрель
 
Informatica for Data Warehouse Optimisation and Data Lake Use-cases
Informatica for Data Warehouse Optimisation and Data Lake Use-casesInformatica for Data Warehouse Optimisation and Data Lake Use-cases
Informatica for Data Warehouse Optimisation and Data Lake Use-cases
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data appliance
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart
 
Oracle Big Data proposition
Oracle Big Data propositionOracle Big Data proposition
Oracle Big Data proposition
 
неделя науки
неделя наукинеделя науки
неделя науки
 
Talksum dec2013 rus_generic
Talksum dec2013 rus_genericTalksum dec2013 rus_generic
Talksum dec2013 rus_generic
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and Hadoop
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
Решения Oracle для Big Data
Решения Oracle для Big DataРешения Oracle для Big Data
Решения Oracle для Big Data
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015
 
Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных систем
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular mode
 

More from Lohika_Odessa_TechTalks

OAuth2 Authorization Server Under the Hood
OAuth2 Authorization Server Under the HoodOAuth2 Authorization Server Under the Hood
OAuth2 Authorization Server Under the Hood
Lohika_Odessa_TechTalks
 
Debugging Microservices - key challenges and techniques - Microservices Odesa...
Debugging Microservices - key challenges and techniques - Microservices Odesa...Debugging Microservices - key challenges and techniques - Microservices Odesa...
Debugging Microservices - key challenges and techniques - Microservices Odesa...
Lohika_Odessa_TechTalks
 
Design and Evolution of APIs in Microservice Architecture
Design and Evolution of APIs in Microservice ArchitectureDesign and Evolution of APIs in Microservice Architecture
Design and Evolution of APIs in Microservice Architecture
Lohika_Odessa_TechTalks
 
Micro-frontends – is it a new normal?
Micro-frontends – is it a new normal?Micro-frontends – is it a new normal?
Micro-frontends – is it a new normal?
Lohika_Odessa_TechTalks
 
Multithreading in go
Multithreading in goMultithreading in go
Multithreading in go
Lohika_Odessa_TechTalks
 
DevOps Odessa #TechTalks 21.01.2020
DevOps Odessa #TechTalks 21.01.2020DevOps Odessa #TechTalks 21.01.2020
DevOps Odessa #TechTalks 21.01.2020
Lohika_Odessa_TechTalks
 
Jenkins' shared libraries in action
Jenkins' shared libraries in actionJenkins' shared libraries in action
Jenkins' shared libraries in action
Lohika_Odessa_TechTalks
 
Prometheus: infrastructure and application monitoring in kubernetes cluster
Prometheus: infrastructure and application monitoring in kubernetes clusterPrometheus: infrastructure and application monitoring in kubernetes cluster
Prometheus: infrastructure and application monitoring in kubernetes cluster
Lohika_Odessa_TechTalks
 
Architectural peripherals of react by Vadym Zhiltsov
Architectural peripherals of react by Vadym ZhiltsovArchitectural peripherals of react by Vadym Zhiltsov
Architectural peripherals of react by Vadym Zhiltsov
Lohika_Odessa_TechTalks
 
React native by example by Vadim Ruban
React native by example by Vadim RubanReact native by example by Vadim Ruban
React native by example by Vadim Ruban
Lohika_Odessa_TechTalks
 
Aws lambda by Leonid Amigud
Aws lambda by Leonid AmigudAws lambda by Leonid Amigud
Aws lambda by Leonid Amigud
Lohika_Odessa_TechTalks
 
Congratulations, you have been promoted to a manager role. You`ve got new pro...
Congratulations, you have been promoted to a manager role. You`ve got new pro...Congratulations, you have been promoted to a manager role. You`ve got new pro...
Congratulations, you have been promoted to a manager role. You`ve got new pro...
Lohika_Odessa_TechTalks
 
"Don't touch me and give me my money" or how motivate people who can but don...
"Don't touch me and give me my money" or  how motivate people who can but don..."Don't touch me and give me my money" or  how motivate people who can but don...
"Don't touch me and give me my money" or how motivate people who can but don...
Lohika_Odessa_TechTalks
 
Docker based Architecture by Denys Serdiuk
Docker based Architecture by Denys SerdiukDocker based Architecture by Denys Serdiuk
Docker based Architecture by Denys Serdiuk
Lohika_Odessa_TechTalks
 
SparkSpark in the Big Data dark by Sergey Levandovskiy
SparkSpark in the Big Data dark by Sergey Levandovskiy  SparkSpark in the Big Data dark by Sergey Levandovskiy
SparkSpark in the Big Data dark by Sergey Levandovskiy
Lohika_Odessa_TechTalks
 
Burnout and how to avoid it in your team. Responsible person's issue by Andre...
Burnout and how to avoid it in your team. Responsible person's issue by Andre...Burnout and how to avoid it in your team. Responsible person's issue by Andre...
Burnout and how to avoid it in your team. Responsible person's issue by Andre...
Lohika_Odessa_TechTalks
 
Performance evaluation process as a way to empower your employees and help th...
Performance evaluation process as a way to empower your employees and help th...Performance evaluation process as a way to empower your employees and help th...
Performance evaluation process as a way to empower your employees and help th...
Lohika_Odessa_TechTalks
 
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalksSelenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
Lohika_Odessa_TechTalks
 
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f..." Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
Lohika_Odessa_TechTalks
 
"WEB applications security testing" by Kirill Semenov for Lohika Odessa QA Te...
"WEB applications security testing" by Kirill Semenov for Lohika Odessa QA Te..."WEB applications security testing" by Kirill Semenov for Lohika Odessa QA Te...
"WEB applications security testing" by Kirill Semenov for Lohika Odessa QA Te...
Lohika_Odessa_TechTalks
 

More from Lohika_Odessa_TechTalks (20)

OAuth2 Authorization Server Under the Hood
OAuth2 Authorization Server Under the HoodOAuth2 Authorization Server Under the Hood
OAuth2 Authorization Server Under the Hood
 
Debugging Microservices - key challenges and techniques - Microservices Odesa...
Debugging Microservices - key challenges and techniques - Microservices Odesa...Debugging Microservices - key challenges and techniques - Microservices Odesa...
Debugging Microservices - key challenges and techniques - Microservices Odesa...
 
Design and Evolution of APIs in Microservice Architecture
Design and Evolution of APIs in Microservice ArchitectureDesign and Evolution of APIs in Microservice Architecture
Design and Evolution of APIs in Microservice Architecture
 
Micro-frontends – is it a new normal?
Micro-frontends – is it a new normal?Micro-frontends – is it a new normal?
Micro-frontends – is it a new normal?
 
Multithreading in go
Multithreading in goMultithreading in go
Multithreading in go
 
DevOps Odessa #TechTalks 21.01.2020
DevOps Odessa #TechTalks 21.01.2020DevOps Odessa #TechTalks 21.01.2020
DevOps Odessa #TechTalks 21.01.2020
 
Jenkins' shared libraries in action
Jenkins' shared libraries in actionJenkins' shared libraries in action
Jenkins' shared libraries in action
 
Prometheus: infrastructure and application monitoring in kubernetes cluster
Prometheus: infrastructure and application monitoring in kubernetes clusterPrometheus: infrastructure and application monitoring in kubernetes cluster
Prometheus: infrastructure and application monitoring in kubernetes cluster
 
Architectural peripherals of react by Vadym Zhiltsov
Architectural peripherals of react by Vadym ZhiltsovArchitectural peripherals of react by Vadym Zhiltsov
Architectural peripherals of react by Vadym Zhiltsov
 
React native by example by Vadim Ruban
React native by example by Vadim RubanReact native by example by Vadim Ruban
React native by example by Vadim Ruban
 
Aws lambda by Leonid Amigud
Aws lambda by Leonid AmigudAws lambda by Leonid Amigud
Aws lambda by Leonid Amigud
 
Congratulations, you have been promoted to a manager role. You`ve got new pro...
Congratulations, you have been promoted to a manager role. You`ve got new pro...Congratulations, you have been promoted to a manager role. You`ve got new pro...
Congratulations, you have been promoted to a manager role. You`ve got new pro...
 
"Don't touch me and give me my money" or how motivate people who can but don...
"Don't touch me and give me my money" or  how motivate people who can but don..."Don't touch me and give me my money" or  how motivate people who can but don...
"Don't touch me and give me my money" or how motivate people who can but don...
 
Docker based Architecture by Denys Serdiuk
Docker based Architecture by Denys SerdiukDocker based Architecture by Denys Serdiuk
Docker based Architecture by Denys Serdiuk
 
SparkSpark in the Big Data dark by Sergey Levandovskiy
SparkSpark in the Big Data dark by Sergey Levandovskiy  SparkSpark in the Big Data dark by Sergey Levandovskiy
SparkSpark in the Big Data dark by Sergey Levandovskiy
 
Burnout and how to avoid it in your team. Responsible person's issue by Andre...
Burnout and how to avoid it in your team. Responsible person's issue by Andre...Burnout and how to avoid it in your team. Responsible person's issue by Andre...
Burnout and how to avoid it in your team. Responsible person's issue by Andre...
 
Performance evaluation process as a way to empower your employees and help th...
Performance evaluation process as a way to empower your employees and help th...Performance evaluation process as a way to empower your employees and help th...
Performance evaluation process as a way to empower your employees and help th...
 
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalksSelenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
Selenium with py test by Alexandr Vasyliev for Lohika Odessa Python TechTalks
 
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f..." Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
 
"WEB applications security testing" by Kirill Semenov for Lohika Odessa QA Te...
"WEB applications security testing" by Kirill Semenov for Lohika Odessa QA Te..."WEB applications security testing" by Kirill Semenov for Lohika Odessa QA Te...
"WEB applications security testing" by Kirill Semenov for Lohika Odessa QA Te...
 

Druid - Interactive Analytics At Scale

  • 2. Apache Druid - Interactive Analytics at Scale
  • 3. Немного истории • Druid вышел в свет в 2011 году как продукт компании Metamarket • Исходный текст был открыт в 2012 году под лицензией GPL • В 2015 году его создатели отделились от Metamarket, организовали компанию Imply и он перешел под патронат Apache • В 2019 году в компанию Imply было инвестировано $30M в рамках этапа финансирования Series B, а сам Druid был оценен в $350M
  • 4. Что такое Apache Druid? Apache Druid - это колоночная база данных семейства OLAP (On- Line Analytical Processing). Druid спроектирован с целью быстрой обработки больших, редко изменяющихся массивов данных и немедленного предоставления доступа к ним. Druid чаще всего используется в качестве базы данных для случаев использования, когда важны:  обработка в режиме реального времени  быстрая обработка запросов  высокая работоспособность и отказоустойчивость Druid лучше всего работает с данными, ориентированными на события.
  • 5. Что же это Apache Druid?
  • 6. Apache Druid и САР теорема CAP теорема: Consistency - клиент получит консистентные данные или ошибку Availability - клиент всегда получит результат, хотя бы не консистентный Partition tolerance - система функционирует, несмотря на потерю сообщений по сети A PС Druid ?
  • 7. Особенности Apache Druid  Колоночное хранение данных  Мощная параллельная обработка данных  Возможность работы в режиме реального времени или в пакетном режиме  Облачная отказоустойчивая архитектура  Быстрая фильтрация  Точные и аппроксимированные вычисления  Интеграция с существующими сервисами обработки больших данных
  • 8. Возможности Apache Druid  Собственная реализация индекса поиска. Реализует обратный индекс  Колоночное хранение данных  Гибкая схема данных  Разбиение данных в кластере по временной метке. Ускоряет запросы с временным параметром  Поддержка SQL  Горизонтальное масштабирование
  • 9. Функционирование Apache Druid  Репликация данных  Независимые сервисы  Автоматическое резервирование данных  Инкрементные обновления
  • 10. Типы узлов по ответственности Мастер: • Overlord - координирует обработку входных данных • Coordinator - координирует распределение данных в кластере Узлы запросов: • Brokers - обрабатывают запросы чтения данных • Routers* - единая точка входа для кластера (опционально) Узлы данных: • Historicals - хранят данные для запросов • MiddleManagers - обрабатывают входные данные
  • 11. Сторонние сервисы • Metastore - хранилище служебной информации. Реляционная БД: MySQL или PostgreSQL. • Apache Zookeeper - сервис координации узлов Druid. Еще используется как Service Discovery и хранилище метаданных. • Deep Storage - распределенная файловая система для хранения данных Druid.
  • 13. Запись данных Overlord Middle Manager BrokerBrokerPeon Deep storage (HDFS, S3) Hadoop task Native task Realtime task Task Segments Middle Manager BrokerBrokerPeon Segments
  • 14. Запрос данных Query Broker Broker Broker Broker Broker Middle Manager Broker Broker Historical Deep storage (HDFS, S3) Segments Streaming
  • 15. Запрос данных Coordinator Query Broker Broker Broker Broker Broker Middle Manager Broker Broker Historical Deep storage (HDFS, S3) Segments Streaming
  • 18. Типы Datasource • Table - создающийся при загрузке данных • Lookup - соответствует объекту lookup (ключ-значение) и хранится в специальной схеме lookup • Union - получается на основе объединения нескольких table Datasource • Inline - получается на основе данных, встроенных в запрос • Query - получается на основе вложенного запроса • Join - объединение разных типов Datasource
  • 20. Структура сегмента • Timestamp – каждая строка в Друиде обязана содержать поле времени. Данные оптимально распределяются по кластеру используя это поле. Запросы чтения тоже могут быть разбиты по временным интервалам: минуты, часы, дни, и т.д. • Dimensions – колонки, которые хранятся в неизменном виде. Во время запросов их можно группировать, фильтровать или применять агрегаторы. Поддерживаемые типы: одиночные строки, массивы строк, Long, Double или Float • Metrics – колонки хранимые в агрегированном состоянии. Они вычисляются во время Свертки (Rollup). Простые агрегирующие функции: count, sum, min, max, first, last, и т.д. И приближенные (approximate) структуры: Count distinct (HyperLogLog, Theta Sketch, Cardinality, HyperUnique), Histograms (Fixed Buckets Histogram, Approximate Histogram), Quantiles (Quantiles Sketch, Moments Sketch). Соответственно метрики должны быть целыми или с плавающей точкой числами.
  • 23. Пример спецификации загрузки данных "dataSchema": { "dataSource": "wikipedia", "timestampSpec": { "column": "timestamp", "format": "auto" }, "dimensionsSpec": { "dimensions": [ { "type": "string", "page" }, { "type": "string", "language" }, { "type": "long", "name": "userId" } ] }, "metricsSpec": [ { "type": "count", "name": "count" }, { "type": "doubleSum", "name": "bytes_added_sum", "fieldName": "bytes_added" }, { "type": "doubleSum", "name": "bytes_deleted_sum", "fieldName": "bytes_deleted" } ], "granularitySpec": { "segmentGranularity": "day", "queryGranularity": "none", "intervals": ["2020-10-21/2020-11-01"] } }
  • 24. Демонстрация • Установка • Запуск • Обработка данных • Чтение данных • Просмотр Datasource • Просмотр сегментов
  • 25. Применение Apache Druid  Аналитика интернет серфинга (сlickstream web and mobile)  Аналитика сетевой телеметрии (мониторинг производительности)  Хранилище серверных метрик  Аналитика цепочек поставок (manufacturing metrics)  Метрики приложений  Анализ цифрового маркетинга или рекламы  Различный BI (business intelligence) / OLAP (online analytical processing)
  • 26. Когда использовать Apache Druid? • Основная операция - добавление данных. Обновления данных происходят очень редко • Основной тип запросов – группировка данных. Также есть поддержка запросов поиска и сканирования • Ожидаемое время выполнения запроса от 100 мс до нескольких секунд • Данные содержат временной компонент • Каждый запрос делается в пределах одной большой таблицы • Большое количество уникальных данных (high cardinality), по которым нужны быстрые запросы • Данные должны быть загружены с больших файлов или источников больших данных как Kafka, HDFS, Flink, Amazon S3, Amazon Kinesis и т.д.
  • 27. Один из примеров архитектуры
  • 29. Apache Druid и САР теорема CAP теорема: Consistency - клиент получит консистентные данные или ошибку Availability - клиент всегда получит результат, хотя бы не консистентный Partition tolerance - система функционирует, несмотря на потерю сообщений по сети A PС Druid