SlideShare a Scribd company logo
1 of 143
Архитектура
HAWQ
Грищенко
Алексей
Кто я?
Enterprise Architect @ Pivotal
• 7 лет в задачах обработки данных
• 5 лет с MPP-системами
• 4 года с Hadoop
• HAWQ - с первой beta
• Отвечаю за архитектуру всех внедрений HAWQ и
Greenplum в EMEA
• Spark contributor
• http://0x0fff.com
О чем расскажу?
• Что такое HAWQ
О чем расскажу?
• Что такое HAWQ
• Зачем он нужен
О чем расскажу?
• Что такое HAWQ
• Зачем он нужен
• Из каких компонент он состоит
О чем расскажу?
• Что такое HAWQ
• Зачем он нужен
• Из каких компонент он состоит
• Как он работает
О чем расскажу?
• Что такое HAWQ
• Зачем он нужен
• Из каких компонент он состоит
• Как он работает
• Пример выполнения запроса
О чем расскажу?
• Что такое HAWQ
• Зачем он нужен
• Из каких компонент он состоит
• Как он работает
• Пример выполнения запроса
• Альтернативные решения
Что такое
• Аналитический движок SQL-on-Hadoop
Что такое
• Аналитический движок SQL-on-Hadoop
• HAdoop With Queries
Что такое
• Аналитический движок SQL-on-Hadoop
• HAdoop With Queries
Postgres Greenplu
m
HAWQ
2005
Fork
Postgres 8.0.2
Что такое
• Аналитический движок SQL-on-Hadoop
• HAdoop With Queries
Postgres Greenplu
m
HAWQ
2005
Fork
Postgres 8.0.2
2009 Rebase
Postgres 8.2.15
Что такое
• Аналитический движок SQL-on-Hadoop
• HAdoop With Queries
Postgres Greenplu
m
HAWQ
2005
Fork
Postgres 8.0.2
2009 Rebase
Postgres 8.2.15
2011 Fork
GPDB 4.2.0.0
Что такое
• Аналитический движок SQL-on-Hadoop
• HAdoop With Queries
Postgres Greenplu
m
HAWQ
2005
Fork
Postgres 8.0.2
2009 Rebase
Postgres 8.2.15
2011 Fork
GPDB 4.2.0.0
2013
HAWQ 1.0.0.0
Что такое
• Аналитический движок SQL-on-Hadoop
• HAdoop With Queries
Postgres Greenplu
m
HAWQ
2005
Fork
Postgres 8.0.2
2009 Rebase
Postgres 8.2.15
2011 Fork
GPDB 4.2.0.0
2013
HAWQ 1.0.0.0
HAWQ 2.0.0.0
Open Source
2015
HAWQ – это …
• 1’500’000 строк кода C и C++
HAWQ – это …
• 1’500’000 строк кода C и C++
– Из которых 200’000 только в заголовочных
файлах
HAWQ – это …
• 1’500’000 строк кода C и C++
– Из которых 200’000 только в заголовочных
файлах
• 180’000 строк кода Python
HAWQ – это …
• 1’500’000 строк кода C и C++
– Из которых 200’000 только в заголовочных
файлах
• 180’000 строк кода Python
• 60’000 строк кода Java
HAWQ – это …
• 1’500’000 строк кода C и C++
– Из которых 200’000 только в заголовочных
файлах
• 180’000 строк кода Python
• 60’000 строк кода Java
• 23’000 строк Makefile’ов
HAWQ – это …
• 1’500’000 строк кода C и C++
– Из которых 200’000 только в заголовочных
файлах
• 180’000 строк кода Python
• 60’000 строк кода Java
• 23’000 строк Makefile’ов
• 7’000 строк shell-скриптов
HAWQ – это …
• 1’500’000 строк кода C и C++
– Из которых 200’000 только в заголовочных
файлах
• 180’000 строк кода Python
• 60’000 строк кода Java
• 23’000 строк Makefile’ов
• 7’000 строк shell-скриптов
• Более 50 корпоративных клиентов
HAWQ – это …
• 1’500’000 строк кода C и C++
– Из которых 200’000 только в заголовочных
файлах
• 180’000 строк кода Python
• 60’000 строк кода Java
• 23’000 строк Makefile’ов
• 7’000 строк shell-скриптов
• Более 50 корпоративных клиентов
– Из них более 10 в EMEA
Apache HAWQ
• Apache HAWQ (incubating) с 09’2015
– http://hawq.incubator.apache.org
– https://github.com/apache/incubator-hawq
• Что находится в Open Source
– Исходники версии HAWQ 2.0 альфа
– Релиз HAWQ 2.0 бэта до конца 2015 года
– Релиз HAWQ 2.0 GA в начале 2016
• Сообщество еще только зарождается –
присоединяйтесь!
Зачем он нужен?
Зачем он нужен?
• Универсальный SQL-интерфейс к данным
Hadoop для BI с ANSI SQL-92, -99, -2003
Зачем он нужен?
• Универсальный SQL-интерфейс к данным
Hadoop для BI с ANSI SQL-92, -99, -2003
– Пример из практики – запрос Cognos на 5000
строк с множеством оконных функций
Зачем он нужен?
• Универсальный SQL-интерфейс к данным
Hadoop для BI с ANSI SQL-92, -99, -2003
– Пример из практики – запрос Cognos на 5000
строк с множеством оконных функций
• Универсальный инструмент для ad hoc
аналитики
Зачем он нужен?
• Универсальный SQL-интерфейс к данным
Hadoop для BI с ANSI SQL-92, -99, -2003
– Пример из практики – запрос Cognos на 5000
строк с множеством оконных функций
• Универсальный инструмент для ad hoc
аналитики
– Пример из практики – распарсить URL,
выдернув из него имя хоста и протокол
Зачем он нужен?
• Универсальный SQL-интерфейс к данным
Hadoop для BI с ANSI SQL-92, -99, -2003
– Пример из практики – запрос Cognos на 5000
строк с множеством оконных функций
• Универсальный инструмент для ad hoc
аналитики
– Пример из практики – распарсить URL,
выдернув из него имя хоста и протокол
• Хорошая производительность
Зачем он нужен?
• Универсальный SQL-интерфейс к данным
Hadoop для BI с ANSI SQL-92, -99, -2003
– Пример из практики – запрос Cognos на 5000
строк с множеством оконных функций
• Универсальный инструмент для ad hoc
аналитики
– Пример из практики – распарсить URL,
выдернув из него имя хоста и протокол
• Хорошая производительность
– Сколько раз данные будут скинуты на HDD для
выполнения SQL-запроса в Hive?
Кластер с HAWQ
Сервер 1
SNameNode
Сервер 4
ZK JM
NameNode
Сервер 3
ZK JM
Сервер 2
ZK JM
Сервер 6
Datanode
Сервер N
Datanode
Сервер 5
Datanode
interconnect
…
Кластер с HAWQ
Сервер 1
SNameNode
Сервер 4
ZK JM
NameNode
Сервер 3
ZK JM
Сервер 2
ZK JM
Сервер 6
Datanode
Сервер N
Datanode
Сервер 5
Datanode
YARN NM YARN NM YARN NM
YARN RM
YARN App
Timeline
interconnect
…
Кластер с HAWQ
HAWQ Master
Сервер 1
SNameNode
Сервер 4
ZK JM
NameNode
Сервер 3
ZK JM
HAWQ
Standby
Сервер 2
ZK JM
HAWQ Segment
Сервер 6
Datanode
HAWQ Segment
Сервер N
Datanode
HAWQ Segment
Сервер 5
Datanode
YARN NM YARN NM YARN NM
YARN RM
YARN App
Timeline
interconnect
…
Мастер Сервера
Сервер 1
SNameNode
Сервер 4
ZK JM
NameNode
Сервер 3
ZK JM
Сервер 2
ZK JM
HAWQ Segment
Сервер 6
Datanode
HAWQ Segment
Сервер N
Datanode
HAWQ Segment
Сервер 5
Datanode
YARN NM YARN NM YARN NM
YARN RM
YARN App
Timeline
interconnect
…
HAWQ Master
HAWQ
Standby
Мастер Сервера
HAWQ Master
Парсер
запросов
Оптимизатор
запросов
Глобальный
менеджер
ресурсов
Менеджер
транзакций
Диспетчер
процессов
Каталог
метаданных
HAWQ Standby Master
Парсер
запросов
Оптимизатор
запросов
Глобальный
менеджер
ресурсов
Менеджер
транзакций
Диспетчер
процессов
Каталог
метаданных
WAL
репл.
HAWQ Master
HAWQ
Standby
Сегменты
Сервер 1
SNameNode
Сервер 4
ZK JM
NameNode
Сервер 3
ZK JM
Сервер 2
ZK JM
Сервер 6
Datanode
Сервер N
Datanode
Сервер 5
Datanode
YARN NM YARN NM YARN NM
YARN RM
YARN App
Timeline
interconnect
HAWQ Segment HAWQ SegmentHAWQ Segment …
Сегменты
HAWQ Segment
Движок выполнения
запросов
libhdfs3
Расширения PXF
HDFS Datanode
Локальная ФС
Директория для
временных данных
Логи
YARN Node Manager
Метаданные
• Структура аналогична структуре каталога
Postgres
Метаданные
• Структура аналогична структуре каталога
Postgres
• Статистика
Метаданные
• Структура аналогична структуре каталога
Postgres
• Статистика
– Количество записей и страниц в таблице
Метаданные
• Структура аналогична структуре каталога
Postgres
• Статистика
– Количество записей и страниц в таблице
– Наиболее частые значения для каждого
поля
Метаданные
• Структура аналогична структуре каталога
Postgres
• Статистика
– Количество записей и страниц в таблице
– Наиболее частые значения для каждого
поля
– Гистограмма для каждого числового поля
Метаданные
• Структура аналогична структуре каталога
Postgres
• Статистика
– Количество записей и страниц в таблице
– Наиболее частые значения для каждого
поля
– Гистограмма для каждого числового поля
– Количество уникальных значений в поле
Метаданные
• Структура аналогична структуре каталога
Postgres
• Статистика
– Количество записей и страниц в таблице
– Наиболее частые значения для каждого
поля
– Гистограмма для каждого числового поля
– Количество уникальных значений в поле
– Количество null значений в поле
Метаданные
• Структура аналогична структуре каталога
Postgres
• Статистика
– Количество записей и страниц в таблице
– Наиболее частые значения для каждого
поля
– Гистограмма для каждого числового поля
– Количество уникальных значений в поле
– Количество null значений в поле
Статистика
Без статистики
Join двух таблиц, сколько записей в результате?
Статистика
Без статистики
Join двух таблиц, сколько записей в результате?
 От 0 до бесконечности
Статистика
Без статистики
Количество строк
Join двух таблиц, сколько записей в результате?
 От 0 до бесконечности
Join двух таблиц по 1000 записей в каждой, сколько
записей в результате?
Статистика
Без статистики
Количество строк
Join двух таблиц, сколько записей в результате?
 От 0 до бесконечности
Join двух таблиц по 1000 записей в каждой, сколько
записей в результате?
 От 0 до 1’000’000
Статистика
Без статистики
Количество строк
Гистограммы и MCV
Join двух таблиц, сколько записей в результате?
 От 0 до бесконечности
Join двух таблиц по 1000 записей в каждой, сколько
записей в результате?
 От 0 до 1’000’000
Join двух таблиц по 1000 записей в каждой, с
известной кардинальностью, гистограммой
распределения, наиболее частыми значениями,
количеством null?
Статистика
Без статистики
Количество строк
Гистограммы и MCV
Join двух таблиц, сколько записей в результате?
 От 0 до бесконечности
Join двух таблиц по 1000 записей в каждой, сколько
записей в результате?
 От 0 до 1’000’000
Join двух таблиц по 1000 записей в каждой, с
известной кардинальностью, гистограммой
распределения, наиболее частыми значениями,
количеством null?
 ~ От 500 до 1’500
Метаданные
• Информация о структуре таблицы
ID Name Num Price
1 Яблоко 10 50
2 Груша 20 80
3 Банан 40 40
4 Апельсин 25 50
5 Киви 5 120
6 Арбуз 20 30
7 Дыня 40 100
8 Ананас 35 90
Метаданные
• Информация о структуре таблицы
– Поля распределения
ID Name Num Price
1 Яблоко 10 50
2 Груша 20 80
3 Банан 40 40
4 Апельсин 25 50
5 Киви 5 120
6 Арбуз 20 30
7 Дыня 40 100
8 Ананас 35 90
hash(ID
)
Метаданные
• Информация о структуре таблицы
– Поля распределения
– Количество hash bucket распределения
ID Name Num Price
1 Яблоко 10 50
2 Груша 20 80
3 Банан 40 40
4 Апельсин 25 50
5 Киви 5 120
6 Арбуз 20 30
7 Дыня 40 100
8 Ананас 35 90
hash(ID
)
ID Name Num Price
1 Яблоко 10 50
2 Груша 20 80
3 Банан 40 40
4 Апельсин 25 50
5 Киви 5 120
6 Арбуз 20 30
7 Дыня 40 100
8 Ананас 35 90
Метаданные
• Информация о структуре таблицы
– Поля распределения
– Количество hash bucket распределения
– Партиционирование (hash, list, range)
ID Name Num Price
1 Яблоко 10 50
2 Груша 20 80
3 Банан 40 40
4 Апельсин 25 50
5 Киви 5 120
6 Арбуз 20 30
7 Дыня 40 100
8 Ананас 35 90
hash(ID
)
ID Name Num Price
1 Яблоко 10 50
2 Груша 20 80
3 Банан 40 40
4 Апельсин 25 50
5 Киви 5 120
6 Арбуз 20 30
7 Дыня 40 100
8 Ананас 35 90
Метаданные
• Информация о структуре таблицы
– Поля распределения
– Количество hash bucket распределения
– Партиционирование (hash, list, range)
• Общие метаданные
– Пользователи и группы
Метаданные
• Информация о структуре таблицы
– Поля распределения
– Количество hash bucket распределения
– Партиционирование (hash, list, range)
• Общие метаданные
– Пользователи и группы
– Права доступа к объектам
Метаданные
• Информация о структуре таблицы
– Поля распределения
– Количество hash bucket распределения
– Партиционирование (hash, list, range)
• Общие метаданные
– Пользователи и группы
– Права доступа к объектам
• Хранимые процедуры
– PL/pgSQL, PL/Java, PL/Python, PL/Perl, PL/R
Оптимизатор Запросов
• Используется cost-based оптимизатор
Оптимизатор Запросов
• Используется cost-based оптимизатор
• Выбрать можно один из двух
Оптимизатор Запросов
• Используется cost-based оптимизатор
• Выбрать можно один из двух
– Planner – модифицированный оптимизатор
Postgres
Оптимизатор Запросов
• Используется cost-based оптимизатор
• Выбрать можно один из двух
– Planner – модифицированный оптимизатор
Postgres
– ORCA (Pivotal Query Optimizer) – разработан
специально для HAWQ
Оптимизатор Запросов
• Используется cost-based оптимизатор
• Выбрать можно один из двух
– Planner – модифицированный оптимизатор
Postgres
– ORCA (Pivotal Query Optimizer) – разработан
специально для HAWQ
• Хинты оптимизатора работают как в
Postgres
Оптимизатор Запросов
• Используется cost-based оптимизатор
• Выбрать можно один из двух
– Planner – модифицированный оптимизатор
Postgres
– ORCA (Pivotal Query Optimizer) – разработан
специально для HAWQ
• Хинты оптимизатора работают как в
Postgres
– Включить/отключить определенную операцию
Оптимизатор Запросов
• Используется cost-based оптимизатор
• Выбрать можно один из двух
– Planner – модифицированный оптимизатор
Postgres
– ORCA (Pivotal Query Optimizer) – разработан
специально для HAWQ
• Хинты оптимизатора работают как в
Postgres
– Включить/отключить определенную операцию
– Изменить веса базовых операций
Формат Хранения
Какой формат хранения данных является
наиболее оптимальным?
Формат Хранения
Какой формат хранения данных является
наиболее оптимальным?
 Зависит от того, что является для вас
критерием оптимальности
Формат Хранения
Какой формат хранения данных является
наиболее оптимальным?
 Зависит от того, что является для вас
критерием оптимальности
– Минимальное потребление ресурсов CPU
Формат Хранения
Какой формат хранения данных является
наиболее оптимальным?
 Зависит от того, что является для вас
критерием оптимальности
– Минимальное потребление ресурсов CPU
– Минимальный объем занимаемого дискового пр-
ва
Формат Хранения
Какой формат хранения данных является
наиболее оптимальным?
 Зависит от того, что является для вас
критерием оптимальности
– Минимальное потребление ресурсов CPU
– Минимальный объем занимаемого дискового пр-
ва
– Минимальное время извлечения записи по
ключу
Формат Хранения
Какой формат хранения данных является
наиболее оптимальным?
 Зависит от того, что является для вас
критерием оптимальности
– Минимальное потребление ресурсов CPU
– Минимальный объем занимаемого дискового пр-
ва
– Минимальное время извлечения записи по
ключу
– Минимальное время извлечения подмножества
столбцов таблицы
Формат Хранения
Какой формат хранения данных является
наиболее оптимальным?
 Зависит от того, что является для вас
критерием оптимальности
– Минимальное потребление ресурсов CPU
– Минимальный объем занимаемого дискового пр-
ва
– Минимальное время извлечения записи по
ключу
– Минимальное время извлечения подмножества
столбцов таблицы
Формат Хранения
• Построчное хранение
– «Обрезанный» формат postgres
• Без toast
• Без ctid, xmin, xmax, cmin, cmax
Формат Хранения
• Построчное хранение
– «Обрезанный» формат postgres
• Без toast
• Без ctid, xmin, xmax, cmin, cmax
– Сжатие
• Без сжатия
• Quicklz
• Zlib уровни 1 - 9
Формат Хранения
• Apache Parquet
– Поколоночное хранение блоков
последовательных строк (“row group”)
Формат Хранения
• Apache Parquet
– Поколоночное хранение блоков
последовательных строк (“row group”)
– Сжатие
• Без сжатия
• Snappy
• Gzip уровни 1 – 9
Формат Хранения
• Apache Parquet
– Поколоночное хранение блоков
последовательных строк (“row group”)
– Сжатие
• Без сжатия
• Snappy
• Gzip уровни 1 – 9
– Размер “row group” и страницы задается для
каждой таблицы отдельно
Разделение Ресурсов
• Два основных варианта
Разделение Ресурсов
• Два основных варианта
– Независимое разделение – HAWQ и YARN не
знают друг о друге
Разделение Ресурсов
• Два основных варианта
– Независимое разделение – HAWQ и YARN не
знают друг о друге
– YARN – HAWQ запрашивает выделение
ресурсов у менеджера ресурсов YARN
Разделение Ресурсов
• Два основных варианта
– Независимое разделение – HAWQ и YARN не
знают друг о друге
– YARN – HAWQ запрашивает выделение
ресурсов у менеджера ресурсов YARN
• Гибкая утилизация кластера
– Запрос может выполняться на части нод
Разделение Ресурсов
• Два основных варианта
– Независимое разделение – HAWQ и YARN не
знают друг о друге
– YARN – HAWQ запрашивает выделение
ресурсов у менеджера ресурсов YARN
• Гибкая утилизация кластера
– Запрос может выполняться на части нод
– Запрос может иметь несколько потоков
исполнения на каждой из нод
Разделение Ресурсов
• Два основных варианта
– Независимое разделение – HAWQ и YARN не
знают друг о друге
– YARN – HAWQ запрашивает выделение
ресурсов у менеджера ресурсов YARN
• Гибкая утилизация кластера
– Запрос может выполняться на части нод
– Запрос может иметь несколько потоков
исполнения на каждой из нод
– Желаемый параллелизм можно задать
вручную
Разделение Ресурсов
• Пулы ресурсов (Resource Queue) задают
Разделение Ресурсов
• Пулы ресурсов (Resource Queue) задают
– Количество параллельных запросов
Разделение Ресурсов
• Пулы ресурсов (Resource Queue) задают
– Количество параллельных запросов
– Приоритет на использование CPU
Разделение Ресурсов
• Пулы ресурсов (Resource Queue) задают
– Количество параллельных запросов
– Приоритет на использование CPU
– Лимит по памяти
Разделение Ресурсов
• Пулы ресурсов (Resource Queue) задают
– Количество параллельных запросов
– Приоритет на использование CPU
– Лимит по памяти
– Лимит по ядрам CPU
Разделение Ресурсов
• Пулы ресурсов (Resource Queue) задают
– Количество параллельных запросов
– Приоритет на использование CPU
– Лимит по памяти
– Лимит по ядрам CPU
– MIN/MAX потоков исполнения в целом по
системе
Разделение Ресурсов
• Пулы ресурсов (Resource Queue) задают
– Количество параллельных запросов
– Приоритет на использование CPU
– Лимит по памяти
– Лимит по ядрам CPU
– MIN/MAX потоков исполнения в целом по
системе
– MIN/MAX потоков исполнения на каждой ноде
Разделение Ресурсов
• Пулы ресурсов (Resource Queue) задают
– Количество параллельных запросов
– Приоритет на использование CPU
– Лимит по памяти
– Лимит по ядрам CPU
– MIN/MAX потоков исполнения в целом по
системе
– MIN/MAX потоков исполнения на каждой ноде
• Задаются для пользователя или группы
Внешние Данные
• PXF
– Фреймворк для доступа к внешним данным
– Легко расширяется, многие пишут свои
плагины
– Официальные плагины: CSV, SequenceFile,
Avro, Hive, HBase
– Open Source плагины: JSON, Accumulo,
Cassandra, JDBC, Redis, Pipe
Внешние Данные
• PXF
– Фреймворк для доступа к внешним данным
– Легко расширяется, многие пишут свои
плагины
– Официальные плагины: CSV, SequenceFile,
Avro, Hive, HBase
– Open Source плагины: JSON, Accumulo,
Cassandra, JDBC, Redis, Pipe
• HCatalog
– HAWQ видит таблицы из HCatalog как свои
внутренние таблицы
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RMДвижок
Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
ScanBars
b
HashJoinb.name =s.bar
ScanSells
s
Filterb.city ='SanFrancisco'
Projects.beer, s.price
MotionGather
MotionRedist(b.name)
Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
План
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Подготовка Исполнение Результат ЗавершениеРесурсы
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Нужно 5 контейнеров
Каждый по 1 ядру
и 256 MB RAM
План Подготовка Исполнение Результат ЗавершениеРесурсы
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Нужно 5 контейнеров
Каждый по 1 ядру
и 256 MB RAM
Сервер 1: 2 контейнера
Сервер 2: 1 контейнер
Сервер N: 2 контейнера
План Подготовка Исполнение Результат ЗавершениеРесурсы
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Нужно 5 контейнеров
Каждый по 1 ядру
и 256 MB RAM
Сервер 1: 2 контейнера
Сервер 2: 1 контейнер
Сервер N: 2 контейнера
План Подготовка Исполнение Результат ЗавершениеРесурсы
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Нужно 5 контейнеров
Каждый по 1 ядру
и 256 MB RAM
Сервер 1: 2 контейнера
Сервер 2: 1 контейнер
Сервер N: 2 контейнера
План Подготовка Исполнение Результат ЗавершениеРесурсы
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
Нужно 5 контейнеров
Каждый по 1 ядру
и 256 MB RAM
Сервер 1: 2 контейнера
Сервер 2: 1 контейнер
Сервер N: 2 контейнера
QE QE QE QE QE
План Подготовка Исполнение Результат ЗавершениеРесурсы
Ресурсы
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
План Исполнение Результат ЗавершениеПодготовка
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
ScanBars
b
HashJoinb.name =s.bar
ScanSells
s
Filterb.city ='SanFrancisco'
Projects.beer, s.price
MotionGather
MotionRedist(b.name)
РесурсыПлан Исполнение Результат ЗавершениеПодготовка
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
ScanBars
b
HashJoinb.name =s.bar
ScanSells
s
Filterb.city ='SanFrancisco'
Projects.beer, s.price
MotionGather
MotionRedist(b.name)
РесурсыПлан Исполнение Результат ЗавершениеПодготовка
Подготовка
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
ScanBars
b
HashJoinb.name =s.bar
ScanSells
s
Filterb.city ='SanFrancisco'
Projects.beer, s.price
MotionGather
MotionRedist(b.name)
РесурсыПлан Результат ЗавершениеИсполнение
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
ScanBars
b
HashJoinb.name =s.bar
ScanSells
s
Filterb.city ='SanFrancisco'
Projects.beer, s.price
MotionGather
MotionRedist(b.name)
ПодготовкаРесурсыПлан Результат ЗавершениеИсполнение
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
ScanBars
b
HashJoinb.name =s.bar
ScanSells
s
Filterb.city ='SanFrancisco'
Projects.beer, s.price
MotionGather
MotionRedist(b.name)
ПодготовкаРесурсыПлан Результат ЗавершениеИсполнение
Исполнение
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
ScanBars
b
HashJoinb.name =s.bar
ScanSells
s
Filterb.city ='SanFrancisco'
Projects.beer, s.price
MotionGather
MotionRedist(b.name)
ПодготовкаРесурсыПлан ЗавершениеРезультат
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
ScanBars
b
HashJoinb.name =s.bar
ScanSells
s
Filterb.city ='SanFrancisco'
Projects.beer, s.price
MotionGather
MotionRedist(b.name)
ИсполнениеПодготовкаРесурсыПлан ЗавершениеРезультат
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
ScanBars
b
HashJoinb.name =s.bar
ScanSells
s
Filterb.city ='SanFrancisco'
Projects.beer, s.price
MotionGather
MotionRedist(b.name)
ИсполнениеПодготовкаРесурсыПлан ЗавершениеРезультат
Результат
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
ИсполнениеПодготовкаРесурсыПлан Завершение
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
Освобождаем
Сервер 1: 2 контейнера
Сервер 2: 1 контейнер
Сервер N: 2 контейнера
РезультатИсполнениеПодготовкаРесурсыПлан Завершение
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
Ок
Освобождаем
Сервер 1: 2 контейнера
Сервер 2: 1 контейнер
Сервер N: 2 контейнера
РезультатИсполнениеПодготовкаРесурсыПлан Завершение
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
Ок
Освобождаем
Сервер 1: 2 контейнера
Сервер 2: 1 контейнер
Сервер N: 2 контейнера
РезультатИсполнениеПодготовкаРесурсыПлан Завершение
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
Ок
Освобождаем
Сервер 1: 2 контейнера
Сервер 2: 1 контейнер
Сервер N: 2 контейнера
РезультатИсполнениеПодготовкаРесурсыПлан Завершение
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RM
QE
Движок
QE QE QE QE QE
Ок
Освобождаем
Сервер 1: 2 контейнера
Сервер 2: 1 контейнер
Сервер N: 2 контейнера
РезультатИсполнениеПодготовкаРесурсыПлан Завершение
Завершение
Жизненный Цикл Запроса
HAWQ Master
Метаданные
Менедж. тр-й
Парсер Опт. запросов
Диспетч. проц.
Менедж. рес-ов
NameNode
Сервер 1
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер 2
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
Сервер N
Локальная директория
HAWQ Segment
Движок
HDFS Datanode
YARN RMДвижок
РезультатИсполнениеПодготовкаРесурсыПлан
Скорость
• Данные не приземляются на диск без
необходимости
Скорость
• Данные не приземляются на диск без
необходимости
• Данные не буферизируются на сегментах
без необходимости
Скорость
• Данные не приземляются на диск без
необходимости
• Данные не буферизируются на сегментах
без необходимости
• Данные передаются между нодами по UDP
Скорость
• Данные не приземляются на диск без
необходимости
• Данные не буферизируются на сегментах
без необходимости
• Данные передаются между нодами по UDP
• Хороший стоимостной оптимизатор запросов
Скорость
• Данные не приземляются на диск без
необходимости
• Данные не буферизируются на сегментах
без необходимости
• Данные передаются между нодами по UDP
• Хороший стоимостной оптимизатор запросов
• Оптимальность кода на C++
Скорость
• Данные не приземляются на диск без
необходимости
• Данные не буферизируются на сегментах
без необходимости
• Данные передаются между нодами по UDP
• Хороший стоимостной оптимизатор запросов
• Оптимальность кода на C++
• Гибкая настройка параллелизма
Альтернативы
Hive SparkSQL Impala HAWQ
Оптимизатор
Альтернативы
Hive SparkSQL Impala HAWQ
Оптимизатор
ANSI SQL
Альтернативы
Hive SparkSQL Impala HAWQ
Оптимизатор
ANSI SQL
Встроенные языки
Альтернативы
Hive SparkSQL Impala HAWQ
Оптимизатор
ANSI SQL
Встроенные языки
Нагрузка на диски
Альтернативы
Hive SparkSQL Impala HAWQ
Оптимизатор
ANSI SQL
Встроенные языки
Нагрузка на диски
Параллелизм
Альтернативы
Hive SparkSQL Impala HAWQ
Оптимизатор
ANSI SQL
Встроенные языки
Нагрузка на диски
Параллелизм
Дистрибутивы
Альтернативы
Hive SparkSQL Impala HAWQ
Оптимизатор
ANSI SQL
Встроенные языки
Нагрузка на диски
Параллелизм
Дистрибутивы
Стабильность
Альтернативы
Hive SparkSQL Impala HAWQ
Оптимизатор
ANSI SQL
Встроенные языки
Нагрузка на диски
Параллелизм
Дистрибутивы
Стабильность
Сообщество
Задачи
• Интеграция с AWS и S3
Задачи
• Интеграция с AWS и S3
• Интеграция с Mesos
Задачи
• Интеграция с AWS и S3
• Интеграция с Mesos
• Улучшение интеграции с Ambari
Задачи
• Интеграция с AWS и S3
• Интеграция с Mesos
• Улучшение интеграции с Ambari
• Интеграция с дистрибутивами Cloudera,
MapR, IBM
Задачи
• Интеграция с AWS и S3
• Интеграция с Mesos
• Улучшение интеграции с Ambari
• Интеграция с дистрибутивами Cloudera,
MapR, IBM
• Сделать самый быстрый и удобный движок
SQL-on-Hadoop
Заключение
• Современный движок SQL-on-Hadoop
• Для анализа структурированных данных
• Объединяет в себе лучшие качества
альтернативных решений
• Новичок среди open source
• Community на стадии зарождения
Присоединяйтесь!
Вопросы
Apache HAWQ
http://hawq.incubator.apache.org
dev@hawq.incubator.apache.org
user@hawq.incubator.apache.org
Связь со мной: http://0x0fff.com

More Related Content

What's hot

Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системAndrey Akulov
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentationVlad Orlov
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)Ontico
 
Метаданные для кластера: гонка key-value-героев / Руслан Рагимов, Светлана Ла...
Метаданные для кластера: гонка key-value-героев / Руслан Рагимов, Светлана Ла...Метаданные для кластера: гонка key-value-героев / Руслан Рагимов, Светлана Ла...
Метаданные для кластера: гонка key-value-героев / Руслан Рагимов, Светлана Ла...Ontico
 
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Ontico
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Ontico
 

What's hot (6)

Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных систем
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentation
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
 
Метаданные для кластера: гонка key-value-героев / Руслан Рагимов, Светлана Ла...
Метаданные для кластера: гонка key-value-героев / Руслан Рагимов, Светлана Ла...Метаданные для кластера: гонка key-value-героев / Руслан Рагимов, Светлана Ла...
Метаданные для кластера: гонка key-value-героев / Руслан Рагимов, Светлана Ла...
 
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...
 

Viewers also liked

Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache SparkRahul Jain
 
Evolving as a professional software developer
Evolving as a professional software developerEvolving as a professional software developer
Evolving as a professional software developerAnton Kirillov
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentAnton Kirillov
 
SplunkLive! Utrecht - Keynote - Rick Fitz
SplunkLive! Utrecht - Keynote - Rick FitzSplunkLive! Utrecht - Keynote - Rick Fitz
SplunkLive! Utrecht - Keynote - Rick FitzSplunk
 
Building Business Service Intelligence with ITSI
Building Business Service Intelligence with ITSIBuilding Business Service Intelligence with ITSI
Building Business Service Intelligence with ITSISplunk
 
Pivotal HAWQ and Hortonworks Data Platform: Modern Data Architecture for IT T...
Pivotal HAWQ and Hortonworks Data Platform: Modern Data Architecture for IT T...Pivotal HAWQ and Hortonworks Data Platform: Modern Data Architecture for IT T...
Pivotal HAWQ and Hortonworks Data Platform: Modern Data Architecture for IT T...VMware Tanzu
 
SplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
SplunkLive! Utrecht - Splunk for IT Operations - Rick FitzSplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
SplunkLive! Utrecht - Splunk for IT Operations - Rick FitzSplunk
 
Splunk Webinar – IT Operations auf den nächsten Level bringen
Splunk Webinar – IT Operations auf den nächsten Level bringenSplunk Webinar – IT Operations auf den nächsten Level bringen
Splunk Webinar – IT Operations auf den nächsten Level bringenSplunk
 
SplunkLive! Utrecht - Splunk for Security - Monzy Merza
SplunkLive! Utrecht - Splunk for Security - Monzy MerzaSplunkLive! Utrecht - Splunk for Security - Monzy Merza
SplunkLive! Utrecht - Splunk for Security - Monzy MerzaSplunk
 
Wie Sie Ransomware aufspüren und was Sie dagegen machen können
Wie Sie Ransomware aufspüren und was Sie dagegen machen könnenWie Sie Ransomware aufspüren und was Sie dagegen machen können
Wie Sie Ransomware aufspüren und was Sie dagegen machen könnenSplunk
 
Machine Data 101
Machine Data 101Machine Data 101
Machine Data 101Splunk
 
Data processing platforms with SMACK: Spark and Mesos internals
Data processing platforms with SMACK:  Spark and Mesos internalsData processing platforms with SMACK:  Spark and Mesos internals
Data processing platforms with SMACK: Spark and Mesos internalsAnton Kirillov
 
Delivering business value from operational insights at ING Bank
Delivering business value from operational insights at ING BankDelivering business value from operational insights at ING Bank
Delivering business value from operational insights at ING BankSplunk
 
Apache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsApache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsAnton Kirillov
 

Viewers also liked (20)

MPP vs Hadoop
MPP vs HadoopMPP vs Hadoop
MPP vs Hadoop
 
Pivotal hawq internals
Pivotal hawq internalsPivotal hawq internals
Pivotal hawq internals
 
Greenplum Architecture
Greenplum ArchitectureGreenplum Architecture
Greenplum Architecture
 
Apache HAWQ Architecture
Apache HAWQ ArchitectureApache HAWQ Architecture
Apache HAWQ Architecture
 
Modern Data Architecture
Modern Data ArchitectureModern Data Architecture
Modern Data Architecture
 
Apache Spark Architecture
Apache Spark ArchitectureApache Spark Architecture
Apache Spark Architecture
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache Spark
 
Evolving as a professional software developer
Evolving as a professional software developerEvolving as a professional software developer
Evolving as a professional software developer
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
 
SplunkLive! Utrecht - Keynote - Rick Fitz
SplunkLive! Utrecht - Keynote - Rick FitzSplunkLive! Utrecht - Keynote - Rick Fitz
SplunkLive! Utrecht - Keynote - Rick Fitz
 
Building Business Service Intelligence with ITSI
Building Business Service Intelligence with ITSIBuilding Business Service Intelligence with ITSI
Building Business Service Intelligence with ITSI
 
Pivotal HAWQ and Hortonworks Data Platform: Modern Data Architecture for IT T...
Pivotal HAWQ and Hortonworks Data Platform: Modern Data Architecture for IT T...Pivotal HAWQ and Hortonworks Data Platform: Modern Data Architecture for IT T...
Pivotal HAWQ and Hortonworks Data Platform: Modern Data Architecture for IT T...
 
SplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
SplunkLive! Utrecht - Splunk for IT Operations - Rick FitzSplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
SplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
 
Splunk Webinar – IT Operations auf den nächsten Level bringen
Splunk Webinar – IT Operations auf den nächsten Level bringenSplunk Webinar – IT Operations auf den nächsten Level bringen
Splunk Webinar – IT Operations auf den nächsten Level bringen
 
SplunkLive! Utrecht - Splunk for Security - Monzy Merza
SplunkLive! Utrecht - Splunk for Security - Monzy MerzaSplunkLive! Utrecht - Splunk for Security - Monzy Merza
SplunkLive! Utrecht - Splunk for Security - Monzy Merza
 
Wie Sie Ransomware aufspüren und was Sie dagegen machen können
Wie Sie Ransomware aufspüren und was Sie dagegen machen könnenWie Sie Ransomware aufspüren und was Sie dagegen machen können
Wie Sie Ransomware aufspüren und was Sie dagegen machen können
 
Machine Data 101
Machine Data 101Machine Data 101
Machine Data 101
 
Data processing platforms with SMACK: Spark and Mesos internals
Data processing platforms with SMACK:  Spark and Mesos internalsData processing platforms with SMACK:  Spark and Mesos internals
Data processing platforms with SMACK: Spark and Mesos internals
 
Delivering business value from operational insights at ING Bank
Delivering business value from operational insights at ING BankDelivering business value from operational insights at ING Bank
Delivering business value from operational insights at ING Bank
 
Apache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsApache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & Internals
 

Similar to Архитектура Apache HAWQ Highload++ 2015

Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Ontico
 
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими рукамиЕвгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими рукамиDrupalSib
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Fwdays
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013Roman Pavlushko
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковEYevseyeva
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementSQALab
 
владивосток форум новости технологий 2015
владивосток форум новости технологий 2015владивосток форум новости технологий 2015
владивосток форум новости технологий 2015Elena Ometova
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примереSergey Xek
 
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)Ilyas Salikhov
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsqlAnatoly Popov
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETGoSharp
 
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...Ontico
 

Similar to Архитектура Apache HAWQ Highload++ 2015 (20)

Breaking logs
Breaking logsBreaking logs
Breaking logs
 
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
 
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими рукамиЕвгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
 
Template Toolkit – зло!?
Template Toolkit – зло!?Template Toolkit – зло!?
Template Toolkit – зло!?
 
TT
TTTT
TT
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил Павлючков
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
владивосток форум новости технологий 2015
владивосток форум новости технологий 2015владивосток форум новости технологий 2015
владивосток форум новости технологий 2015
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
Sivko
SivkoSivko
Sivko
 
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
 

Архитектура Apache HAWQ Highload++ 2015

  • 2. Кто я? Enterprise Architect @ Pivotal • 7 лет в задачах обработки данных • 5 лет с MPP-системами • 4 года с Hadoop • HAWQ - с первой beta • Отвечаю за архитектуру всех внедрений HAWQ и Greenplum в EMEA • Spark contributor • http://0x0fff.com
  • 3. О чем расскажу? • Что такое HAWQ
  • 4. О чем расскажу? • Что такое HAWQ • Зачем он нужен
  • 5. О чем расскажу? • Что такое HAWQ • Зачем он нужен • Из каких компонент он состоит
  • 6. О чем расскажу? • Что такое HAWQ • Зачем он нужен • Из каких компонент он состоит • Как он работает
  • 7. О чем расскажу? • Что такое HAWQ • Зачем он нужен • Из каких компонент он состоит • Как он работает • Пример выполнения запроса
  • 8. О чем расскажу? • Что такое HAWQ • Зачем он нужен • Из каких компонент он состоит • Как он работает • Пример выполнения запроса • Альтернативные решения
  • 10. Что такое • Аналитический движок SQL-on-Hadoop • HAdoop With Queries
  • 11. Что такое • Аналитический движок SQL-on-Hadoop • HAdoop With Queries Postgres Greenplu m HAWQ 2005 Fork Postgres 8.0.2
  • 12. Что такое • Аналитический движок SQL-on-Hadoop • HAdoop With Queries Postgres Greenplu m HAWQ 2005 Fork Postgres 8.0.2 2009 Rebase Postgres 8.2.15
  • 13. Что такое • Аналитический движок SQL-on-Hadoop • HAdoop With Queries Postgres Greenplu m HAWQ 2005 Fork Postgres 8.0.2 2009 Rebase Postgres 8.2.15 2011 Fork GPDB 4.2.0.0
  • 14. Что такое • Аналитический движок SQL-on-Hadoop • HAdoop With Queries Postgres Greenplu m HAWQ 2005 Fork Postgres 8.0.2 2009 Rebase Postgres 8.2.15 2011 Fork GPDB 4.2.0.0 2013 HAWQ 1.0.0.0
  • 15. Что такое • Аналитический движок SQL-on-Hadoop • HAdoop With Queries Postgres Greenplu m HAWQ 2005 Fork Postgres 8.0.2 2009 Rebase Postgres 8.2.15 2011 Fork GPDB 4.2.0.0 2013 HAWQ 1.0.0.0 HAWQ 2.0.0.0 Open Source 2015
  • 16. HAWQ – это … • 1’500’000 строк кода C и C++
  • 17. HAWQ – это … • 1’500’000 строк кода C и C++ – Из которых 200’000 только в заголовочных файлах
  • 18. HAWQ – это … • 1’500’000 строк кода C и C++ – Из которых 200’000 только в заголовочных файлах • 180’000 строк кода Python
  • 19. HAWQ – это … • 1’500’000 строк кода C и C++ – Из которых 200’000 только в заголовочных файлах • 180’000 строк кода Python • 60’000 строк кода Java
  • 20. HAWQ – это … • 1’500’000 строк кода C и C++ – Из которых 200’000 только в заголовочных файлах • 180’000 строк кода Python • 60’000 строк кода Java • 23’000 строк Makefile’ов
  • 21. HAWQ – это … • 1’500’000 строк кода C и C++ – Из которых 200’000 только в заголовочных файлах • 180’000 строк кода Python • 60’000 строк кода Java • 23’000 строк Makefile’ов • 7’000 строк shell-скриптов
  • 22. HAWQ – это … • 1’500’000 строк кода C и C++ – Из которых 200’000 только в заголовочных файлах • 180’000 строк кода Python • 60’000 строк кода Java • 23’000 строк Makefile’ов • 7’000 строк shell-скриптов • Более 50 корпоративных клиентов
  • 23. HAWQ – это … • 1’500’000 строк кода C и C++ – Из которых 200’000 только в заголовочных файлах • 180’000 строк кода Python • 60’000 строк кода Java • 23’000 строк Makefile’ов • 7’000 строк shell-скриптов • Более 50 корпоративных клиентов – Из них более 10 в EMEA
  • 24. Apache HAWQ • Apache HAWQ (incubating) с 09’2015 – http://hawq.incubator.apache.org – https://github.com/apache/incubator-hawq • Что находится в Open Source – Исходники версии HAWQ 2.0 альфа – Релиз HAWQ 2.0 бэта до конца 2015 года – Релиз HAWQ 2.0 GA в начале 2016 • Сообщество еще только зарождается – присоединяйтесь!
  • 26. Зачем он нужен? • Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003
  • 27. Зачем он нужен? • Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003 – Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций
  • 28. Зачем он нужен? • Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003 – Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций • Универсальный инструмент для ad hoc аналитики
  • 29. Зачем он нужен? • Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003 – Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций • Универсальный инструмент для ad hoc аналитики – Пример из практики – распарсить URL, выдернув из него имя хоста и протокол
  • 30. Зачем он нужен? • Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003 – Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций • Универсальный инструмент для ad hoc аналитики – Пример из практики – распарсить URL, выдернув из него имя хоста и протокол • Хорошая производительность
  • 31. Зачем он нужен? • Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003 – Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций • Универсальный инструмент для ad hoc аналитики – Пример из практики – распарсить URL, выдернув из него имя хоста и протокол • Хорошая производительность – Сколько раз данные будут скинуты на HDD для выполнения SQL-запроса в Hive?
  • 32. Кластер с HAWQ Сервер 1 SNameNode Сервер 4 ZK JM NameNode Сервер 3 ZK JM Сервер 2 ZK JM Сервер 6 Datanode Сервер N Datanode Сервер 5 Datanode interconnect …
  • 33. Кластер с HAWQ Сервер 1 SNameNode Сервер 4 ZK JM NameNode Сервер 3 ZK JM Сервер 2 ZK JM Сервер 6 Datanode Сервер N Datanode Сервер 5 Datanode YARN NM YARN NM YARN NM YARN RM YARN App Timeline interconnect …
  • 34. Кластер с HAWQ HAWQ Master Сервер 1 SNameNode Сервер 4 ZK JM NameNode Сервер 3 ZK JM HAWQ Standby Сервер 2 ZK JM HAWQ Segment Сервер 6 Datanode HAWQ Segment Сервер N Datanode HAWQ Segment Сервер 5 Datanode YARN NM YARN NM YARN NM YARN RM YARN App Timeline interconnect …
  • 35. Мастер Сервера Сервер 1 SNameNode Сервер 4 ZK JM NameNode Сервер 3 ZK JM Сервер 2 ZK JM HAWQ Segment Сервер 6 Datanode HAWQ Segment Сервер N Datanode HAWQ Segment Сервер 5 Datanode YARN NM YARN NM YARN NM YARN RM YARN App Timeline interconnect … HAWQ Master HAWQ Standby
  • 36. Мастер Сервера HAWQ Master Парсер запросов Оптимизатор запросов Глобальный менеджер ресурсов Менеджер транзакций Диспетчер процессов Каталог метаданных HAWQ Standby Master Парсер запросов Оптимизатор запросов Глобальный менеджер ресурсов Менеджер транзакций Диспетчер процессов Каталог метаданных WAL репл.
  • 37. HAWQ Master HAWQ Standby Сегменты Сервер 1 SNameNode Сервер 4 ZK JM NameNode Сервер 3 ZK JM Сервер 2 ZK JM Сервер 6 Datanode Сервер N Datanode Сервер 5 Datanode YARN NM YARN NM YARN NM YARN RM YARN App Timeline interconnect HAWQ Segment HAWQ SegmentHAWQ Segment …
  • 38. Сегменты HAWQ Segment Движок выполнения запросов libhdfs3 Расширения PXF HDFS Datanode Локальная ФС Директория для временных данных Логи YARN Node Manager
  • 39. Метаданные • Структура аналогична структуре каталога Postgres
  • 40. Метаданные • Структура аналогична структуре каталога Postgres • Статистика
  • 41. Метаданные • Структура аналогична структуре каталога Postgres • Статистика – Количество записей и страниц в таблице
  • 42. Метаданные • Структура аналогична структуре каталога Postgres • Статистика – Количество записей и страниц в таблице – Наиболее частые значения для каждого поля
  • 43. Метаданные • Структура аналогична структуре каталога Postgres • Статистика – Количество записей и страниц в таблице – Наиболее частые значения для каждого поля – Гистограмма для каждого числового поля
  • 44. Метаданные • Структура аналогична структуре каталога Postgres • Статистика – Количество записей и страниц в таблице – Наиболее частые значения для каждого поля – Гистограмма для каждого числового поля – Количество уникальных значений в поле
  • 45. Метаданные • Структура аналогична структуре каталога Postgres • Статистика – Количество записей и страниц в таблице – Наиболее частые значения для каждого поля – Гистограмма для каждого числового поля – Количество уникальных значений в поле – Количество null значений в поле
  • 46. Метаданные • Структура аналогична структуре каталога Postgres • Статистика – Количество записей и страниц в таблице – Наиболее частые значения для каждого поля – Гистограмма для каждого числового поля – Количество уникальных значений в поле – Количество null значений в поле
  • 47. Статистика Без статистики Join двух таблиц, сколько записей в результате?
  • 48. Статистика Без статистики Join двух таблиц, сколько записей в результате?  От 0 до бесконечности
  • 49. Статистика Без статистики Количество строк Join двух таблиц, сколько записей в результате?  От 0 до бесконечности Join двух таблиц по 1000 записей в каждой, сколько записей в результате?
  • 50. Статистика Без статистики Количество строк Join двух таблиц, сколько записей в результате?  От 0 до бесконечности Join двух таблиц по 1000 записей в каждой, сколько записей в результате?  От 0 до 1’000’000
  • 51. Статистика Без статистики Количество строк Гистограммы и MCV Join двух таблиц, сколько записей в результате?  От 0 до бесконечности Join двух таблиц по 1000 записей в каждой, сколько записей в результате?  От 0 до 1’000’000 Join двух таблиц по 1000 записей в каждой, с известной кардинальностью, гистограммой распределения, наиболее частыми значениями, количеством null?
  • 52. Статистика Без статистики Количество строк Гистограммы и MCV Join двух таблиц, сколько записей в результате?  От 0 до бесконечности Join двух таблиц по 1000 записей в каждой, сколько записей в результате?  От 0 до 1’000’000 Join двух таблиц по 1000 записей в каждой, с известной кардинальностью, гистограммой распределения, наиболее частыми значениями, количеством null?  ~ От 500 до 1’500
  • 53. Метаданные • Информация о структуре таблицы ID Name Num Price 1 Яблоко 10 50 2 Груша 20 80 3 Банан 40 40 4 Апельсин 25 50 5 Киви 5 120 6 Арбуз 20 30 7 Дыня 40 100 8 Ананас 35 90
  • 54. Метаданные • Информация о структуре таблицы – Поля распределения ID Name Num Price 1 Яблоко 10 50 2 Груша 20 80 3 Банан 40 40 4 Апельсин 25 50 5 Киви 5 120 6 Арбуз 20 30 7 Дыня 40 100 8 Ананас 35 90 hash(ID )
  • 55. Метаданные • Информация о структуре таблицы – Поля распределения – Количество hash bucket распределения ID Name Num Price 1 Яблоко 10 50 2 Груша 20 80 3 Банан 40 40 4 Апельсин 25 50 5 Киви 5 120 6 Арбуз 20 30 7 Дыня 40 100 8 Ананас 35 90 hash(ID ) ID Name Num Price 1 Яблоко 10 50 2 Груша 20 80 3 Банан 40 40 4 Апельсин 25 50 5 Киви 5 120 6 Арбуз 20 30 7 Дыня 40 100 8 Ананас 35 90
  • 56. Метаданные • Информация о структуре таблицы – Поля распределения – Количество hash bucket распределения – Партиционирование (hash, list, range) ID Name Num Price 1 Яблоко 10 50 2 Груша 20 80 3 Банан 40 40 4 Апельсин 25 50 5 Киви 5 120 6 Арбуз 20 30 7 Дыня 40 100 8 Ананас 35 90 hash(ID ) ID Name Num Price 1 Яблоко 10 50 2 Груша 20 80 3 Банан 40 40 4 Апельсин 25 50 5 Киви 5 120 6 Арбуз 20 30 7 Дыня 40 100 8 Ананас 35 90
  • 57. Метаданные • Информация о структуре таблицы – Поля распределения – Количество hash bucket распределения – Партиционирование (hash, list, range) • Общие метаданные – Пользователи и группы
  • 58. Метаданные • Информация о структуре таблицы – Поля распределения – Количество hash bucket распределения – Партиционирование (hash, list, range) • Общие метаданные – Пользователи и группы – Права доступа к объектам
  • 59. Метаданные • Информация о структуре таблицы – Поля распределения – Количество hash bucket распределения – Партиционирование (hash, list, range) • Общие метаданные – Пользователи и группы – Права доступа к объектам • Хранимые процедуры – PL/pgSQL, PL/Java, PL/Python, PL/Perl, PL/R
  • 61. Оптимизатор Запросов • Используется cost-based оптимизатор • Выбрать можно один из двух
  • 62. Оптимизатор Запросов • Используется cost-based оптимизатор • Выбрать можно один из двух – Planner – модифицированный оптимизатор Postgres
  • 63. Оптимизатор Запросов • Используется cost-based оптимизатор • Выбрать можно один из двух – Planner – модифицированный оптимизатор Postgres – ORCA (Pivotal Query Optimizer) – разработан специально для HAWQ
  • 64. Оптимизатор Запросов • Используется cost-based оптимизатор • Выбрать можно один из двух – Planner – модифицированный оптимизатор Postgres – ORCA (Pivotal Query Optimizer) – разработан специально для HAWQ • Хинты оптимизатора работают как в Postgres
  • 65. Оптимизатор Запросов • Используется cost-based оптимизатор • Выбрать можно один из двух – Planner – модифицированный оптимизатор Postgres – ORCA (Pivotal Query Optimizer) – разработан специально для HAWQ • Хинты оптимизатора работают как в Postgres – Включить/отключить определенную операцию
  • 66. Оптимизатор Запросов • Используется cost-based оптимизатор • Выбрать можно один из двух – Planner – модифицированный оптимизатор Postgres – ORCA (Pivotal Query Optimizer) – разработан специально для HAWQ • Хинты оптимизатора работают как в Postgres – Включить/отключить определенную операцию – Изменить веса базовых операций
  • 67. Формат Хранения Какой формат хранения данных является наиболее оптимальным?
  • 68. Формат Хранения Какой формат хранения данных является наиболее оптимальным?  Зависит от того, что является для вас критерием оптимальности
  • 69. Формат Хранения Какой формат хранения данных является наиболее оптимальным?  Зависит от того, что является для вас критерием оптимальности – Минимальное потребление ресурсов CPU
  • 70. Формат Хранения Какой формат хранения данных является наиболее оптимальным?  Зависит от того, что является для вас критерием оптимальности – Минимальное потребление ресурсов CPU – Минимальный объем занимаемого дискового пр- ва
  • 71. Формат Хранения Какой формат хранения данных является наиболее оптимальным?  Зависит от того, что является для вас критерием оптимальности – Минимальное потребление ресурсов CPU – Минимальный объем занимаемого дискового пр- ва – Минимальное время извлечения записи по ключу
  • 72. Формат Хранения Какой формат хранения данных является наиболее оптимальным?  Зависит от того, что является для вас критерием оптимальности – Минимальное потребление ресурсов CPU – Минимальный объем занимаемого дискового пр- ва – Минимальное время извлечения записи по ключу – Минимальное время извлечения подмножества столбцов таблицы
  • 73. Формат Хранения Какой формат хранения данных является наиболее оптимальным?  Зависит от того, что является для вас критерием оптимальности – Минимальное потребление ресурсов CPU – Минимальный объем занимаемого дискового пр- ва – Минимальное время извлечения записи по ключу – Минимальное время извлечения подмножества столбцов таблицы
  • 74. Формат Хранения • Построчное хранение – «Обрезанный» формат postgres • Без toast • Без ctid, xmin, xmax, cmin, cmax
  • 75. Формат Хранения • Построчное хранение – «Обрезанный» формат postgres • Без toast • Без ctid, xmin, xmax, cmin, cmax – Сжатие • Без сжатия • Quicklz • Zlib уровни 1 - 9
  • 76. Формат Хранения • Apache Parquet – Поколоночное хранение блоков последовательных строк (“row group”)
  • 77. Формат Хранения • Apache Parquet – Поколоночное хранение блоков последовательных строк (“row group”) – Сжатие • Без сжатия • Snappy • Gzip уровни 1 – 9
  • 78. Формат Хранения • Apache Parquet – Поколоночное хранение блоков последовательных строк (“row group”) – Сжатие • Без сжатия • Snappy • Gzip уровни 1 – 9 – Размер “row group” и страницы задается для каждой таблицы отдельно
  • 79. Разделение Ресурсов • Два основных варианта
  • 80. Разделение Ресурсов • Два основных варианта – Независимое разделение – HAWQ и YARN не знают друг о друге
  • 81. Разделение Ресурсов • Два основных варианта – Независимое разделение – HAWQ и YARN не знают друг о друге – YARN – HAWQ запрашивает выделение ресурсов у менеджера ресурсов YARN
  • 82. Разделение Ресурсов • Два основных варианта – Независимое разделение – HAWQ и YARN не знают друг о друге – YARN – HAWQ запрашивает выделение ресурсов у менеджера ресурсов YARN • Гибкая утилизация кластера – Запрос может выполняться на части нод
  • 83. Разделение Ресурсов • Два основных варианта – Независимое разделение – HAWQ и YARN не знают друг о друге – YARN – HAWQ запрашивает выделение ресурсов у менеджера ресурсов YARN • Гибкая утилизация кластера – Запрос может выполняться на части нод – Запрос может иметь несколько потоков исполнения на каждой из нод
  • 84. Разделение Ресурсов • Два основных варианта – Независимое разделение – HAWQ и YARN не знают друг о друге – YARN – HAWQ запрашивает выделение ресурсов у менеджера ресурсов YARN • Гибкая утилизация кластера – Запрос может выполняться на части нод – Запрос может иметь несколько потоков исполнения на каждой из нод – Желаемый параллелизм можно задать вручную
  • 85. Разделение Ресурсов • Пулы ресурсов (Resource Queue) задают
  • 86. Разделение Ресурсов • Пулы ресурсов (Resource Queue) задают – Количество параллельных запросов
  • 87. Разделение Ресурсов • Пулы ресурсов (Resource Queue) задают – Количество параллельных запросов – Приоритет на использование CPU
  • 88. Разделение Ресурсов • Пулы ресурсов (Resource Queue) задают – Количество параллельных запросов – Приоритет на использование CPU – Лимит по памяти
  • 89. Разделение Ресурсов • Пулы ресурсов (Resource Queue) задают – Количество параллельных запросов – Приоритет на использование CPU – Лимит по памяти – Лимит по ядрам CPU
  • 90. Разделение Ресурсов • Пулы ресурсов (Resource Queue) задают – Количество параллельных запросов – Приоритет на использование CPU – Лимит по памяти – Лимит по ядрам CPU – MIN/MAX потоков исполнения в целом по системе
  • 91. Разделение Ресурсов • Пулы ресурсов (Resource Queue) задают – Количество параллельных запросов – Приоритет на использование CPU – Лимит по памяти – Лимит по ядрам CPU – MIN/MAX потоков исполнения в целом по системе – MIN/MAX потоков исполнения на каждой ноде
  • 92. Разделение Ресурсов • Пулы ресурсов (Resource Queue) задают – Количество параллельных запросов – Приоритет на использование CPU – Лимит по памяти – Лимит по ядрам CPU – MIN/MAX потоков исполнения в целом по системе – MIN/MAX потоков исполнения на каждой ноде • Задаются для пользователя или группы
  • 93. Внешние Данные • PXF – Фреймворк для доступа к внешним данным – Легко расширяется, многие пишут свои плагины – Официальные плагины: CSV, SequenceFile, Avro, Hive, HBase – Open Source плагины: JSON, Accumulo, Cassandra, JDBC, Redis, Pipe
  • 94. Внешние Данные • PXF – Фреймворк для доступа к внешним данным – Легко расширяется, многие пишут свои плагины – Официальные плагины: CSV, SequenceFile, Avro, Hive, HBase – Open Source плагины: JSON, Accumulo, Cassandra, JDBC, Redis, Pipe • HCatalog – HAWQ видит таблицы из HCatalog как свои внутренние таблицы
  • 95. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RMДвижок Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
  • 96. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
  • 97. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
  • 98. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
  • 99. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
  • 100. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок ScanBars b HashJoinb.name =s.bar ScanSells s Filterb.city ='SanFrancisco' Projects.beer, s.price MotionGather MotionRedist(b.name) Ресурсы Подготовка Исполнение Результат ЗавершениеПлан
  • 101. План Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Подготовка Исполнение Результат ЗавершениеРесурсы
  • 102. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Нужно 5 контейнеров Каждый по 1 ядру и 256 MB RAM План Подготовка Исполнение Результат ЗавершениеРесурсы
  • 103. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Нужно 5 контейнеров Каждый по 1 ядру и 256 MB RAM Сервер 1: 2 контейнера Сервер 2: 1 контейнер Сервер N: 2 контейнера План Подготовка Исполнение Результат ЗавершениеРесурсы
  • 104. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Нужно 5 контейнеров Каждый по 1 ядру и 256 MB RAM Сервер 1: 2 контейнера Сервер 2: 1 контейнер Сервер N: 2 контейнера План Подготовка Исполнение Результат ЗавершениеРесурсы
  • 105. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Нужно 5 контейнеров Каждый по 1 ядру и 256 MB RAM Сервер 1: 2 контейнера Сервер 2: 1 контейнер Сервер N: 2 контейнера План Подготовка Исполнение Результат ЗавершениеРесурсы
  • 106. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок Нужно 5 контейнеров Каждый по 1 ядру и 256 MB RAM Сервер 1: 2 контейнера Сервер 2: 1 контейнер Сервер N: 2 контейнера QE QE QE QE QE План Подготовка Исполнение Результат ЗавершениеРесурсы
  • 107. Ресурсы Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE План Исполнение Результат ЗавершениеПодготовка
  • 108. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE ScanBars b HashJoinb.name =s.bar ScanSells s Filterb.city ='SanFrancisco' Projects.beer, s.price MotionGather MotionRedist(b.name) РесурсыПлан Исполнение Результат ЗавершениеПодготовка
  • 109. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE ScanBars b HashJoinb.name =s.bar ScanSells s Filterb.city ='SanFrancisco' Projects.beer, s.price MotionGather MotionRedist(b.name) РесурсыПлан Исполнение Результат ЗавершениеПодготовка
  • 110. Подготовка Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE ScanBars b HashJoinb.name =s.bar ScanSells s Filterb.city ='SanFrancisco' Projects.beer, s.price MotionGather MotionRedist(b.name) РесурсыПлан Результат ЗавершениеИсполнение
  • 111. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE ScanBars b HashJoinb.name =s.bar ScanSells s Filterb.city ='SanFrancisco' Projects.beer, s.price MotionGather MotionRedist(b.name) ПодготовкаРесурсыПлан Результат ЗавершениеИсполнение
  • 112. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE ScanBars b HashJoinb.name =s.bar ScanSells s Filterb.city ='SanFrancisco' Projects.beer, s.price MotionGather MotionRedist(b.name) ПодготовкаРесурсыПлан Результат ЗавершениеИсполнение
  • 113. Исполнение Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE ScanBars b HashJoinb.name =s.bar ScanSells s Filterb.city ='SanFrancisco' Projects.beer, s.price MotionGather MotionRedist(b.name) ПодготовкаРесурсыПлан ЗавершениеРезультат
  • 114. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE ScanBars b HashJoinb.name =s.bar ScanSells s Filterb.city ='SanFrancisco' Projects.beer, s.price MotionGather MotionRedist(b.name) ИсполнениеПодготовкаРесурсыПлан ЗавершениеРезультат
  • 115. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE ScanBars b HashJoinb.name =s.bar ScanSells s Filterb.city ='SanFrancisco' Projects.beer, s.price MotionGather MotionRedist(b.name) ИсполнениеПодготовкаРесурсыПлан ЗавершениеРезультат
  • 116. Результат Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE ИсполнениеПодготовкаРесурсыПлан Завершение
  • 117. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE Освобождаем Сервер 1: 2 контейнера Сервер 2: 1 контейнер Сервер N: 2 контейнера РезультатИсполнениеПодготовкаРесурсыПлан Завершение
  • 118. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE Ок Освобождаем Сервер 1: 2 контейнера Сервер 2: 1 контейнер Сервер N: 2 контейнера РезультатИсполнениеПодготовкаРесурсыПлан Завершение
  • 119. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE Ок Освобождаем Сервер 1: 2 контейнера Сервер 2: 1 контейнер Сервер N: 2 контейнера РезультатИсполнениеПодготовкаРесурсыПлан Завершение
  • 120. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE Ок Освобождаем Сервер 1: 2 контейнера Сервер 2: 1 контейнер Сервер N: 2 контейнера РезультатИсполнениеПодготовкаРесурсыПлан Завершение
  • 121. Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RM QE Движок QE QE QE QE QE Ок Освобождаем Сервер 1: 2 контейнера Сервер 2: 1 контейнер Сервер N: 2 контейнера РезультатИсполнениеПодготовкаРесурсыПлан Завершение
  • 122. Завершение Жизненный Цикл Запроса HAWQ Master Метаданные Менедж. тр-й Парсер Опт. запросов Диспетч. проц. Менедж. рес-ов NameNode Сервер 1 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер 2 Локальная директория HAWQ Segment Движок HDFS Datanode Сервер N Локальная директория HAWQ Segment Движок HDFS Datanode YARN RMДвижок РезультатИсполнениеПодготовкаРесурсыПлан
  • 123. Скорость • Данные не приземляются на диск без необходимости
  • 124. Скорость • Данные не приземляются на диск без необходимости • Данные не буферизируются на сегментах без необходимости
  • 125. Скорость • Данные не приземляются на диск без необходимости • Данные не буферизируются на сегментах без необходимости • Данные передаются между нодами по UDP
  • 126. Скорость • Данные не приземляются на диск без необходимости • Данные не буферизируются на сегментах без необходимости • Данные передаются между нодами по UDP • Хороший стоимостной оптимизатор запросов
  • 127. Скорость • Данные не приземляются на диск без необходимости • Данные не буферизируются на сегментах без необходимости • Данные передаются между нодами по UDP • Хороший стоимостной оптимизатор запросов • Оптимальность кода на C++
  • 128. Скорость • Данные не приземляются на диск без необходимости • Данные не буферизируются на сегментах без необходимости • Данные передаются между нодами по UDP • Хороший стоимостной оптимизатор запросов • Оптимальность кода на C++ • Гибкая настройка параллелизма
  • 129. Альтернативы Hive SparkSQL Impala HAWQ Оптимизатор
  • 130. Альтернативы Hive SparkSQL Impala HAWQ Оптимизатор ANSI SQL
  • 131. Альтернативы Hive SparkSQL Impala HAWQ Оптимизатор ANSI SQL Встроенные языки
  • 132. Альтернативы Hive SparkSQL Impala HAWQ Оптимизатор ANSI SQL Встроенные языки Нагрузка на диски
  • 133. Альтернативы Hive SparkSQL Impala HAWQ Оптимизатор ANSI SQL Встроенные языки Нагрузка на диски Параллелизм
  • 134. Альтернативы Hive SparkSQL Impala HAWQ Оптимизатор ANSI SQL Встроенные языки Нагрузка на диски Параллелизм Дистрибутивы
  • 135. Альтернативы Hive SparkSQL Impala HAWQ Оптимизатор ANSI SQL Встроенные языки Нагрузка на диски Параллелизм Дистрибутивы Стабильность
  • 136. Альтернативы Hive SparkSQL Impala HAWQ Оптимизатор ANSI SQL Встроенные языки Нагрузка на диски Параллелизм Дистрибутивы Стабильность Сообщество
  • 138. Задачи • Интеграция с AWS и S3 • Интеграция с Mesos
  • 139. Задачи • Интеграция с AWS и S3 • Интеграция с Mesos • Улучшение интеграции с Ambari
  • 140. Задачи • Интеграция с AWS и S3 • Интеграция с Mesos • Улучшение интеграции с Ambari • Интеграция с дистрибутивами Cloudera, MapR, IBM
  • 141. Задачи • Интеграция с AWS и S3 • Интеграция с Mesos • Улучшение интеграции с Ambari • Интеграция с дистрибутивами Cloudera, MapR, IBM • Сделать самый быстрый и удобный движок SQL-on-Hadoop
  • 142. Заключение • Современный движок SQL-on-Hadoop • Для анализа структурированных данных • Объединяет в себе лучшие качества альтернативных решений • Новичок среди open source • Community на стадии зарождения Присоединяйтесь!