Архитектура hawq / Алексей Грищенко (pivotal)

143
Архитектура HAWQ Грищенко Алексей

Upload: ontico

Post on 19-Jan-2017

400 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Архитектура HAWQ Грищенко Алексей

Page 2: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Кто я? Enterprise Architect @ Pivotal •  7 лет в задачах обработки данных

•  5 лет с MPP-системами

•  4 года с Hadoop

•  HAWQ - с первой beta

•  Отвечаю за архитектуру всех внедрений HAWQ и Greenplum в EMEA

•  Spark contributor

•  http://0x0fff.com

Page 3: Архитектура HAWQ / Алексей Грищенко (Pivotal)

О чем расскажу? •  Что такое HAWQ

Page 4: Архитектура HAWQ / Алексей Грищенко (Pivotal)

О чем расскажу? •  Что такое HAWQ

•  Зачем он нужен

Page 5: Архитектура HAWQ / Алексей Грищенко (Pivotal)

О чем расскажу? •  Что такое HAWQ

•  Зачем он нужен

•  Из каких компонент он состоит

Page 6: Архитектура HAWQ / Алексей Грищенко (Pivotal)

О чем расскажу? •  Что такое HAWQ

•  Зачем он нужен

•  Из каких компонент он состоит

•  Как он работает

Page 7: Архитектура HAWQ / Алексей Грищенко (Pivotal)

О чем расскажу? •  Что такое HAWQ

•  Зачем он нужен

•  Из каких компонент он состоит

•  Как он работает

•  Пример выполнения запроса

Page 8: Архитектура HAWQ / Алексей Грищенко (Pivotal)

О чем расскажу? •  Что такое HAWQ

•  Зачем он нужен

•  Из каких компонент он состоит

•  Как он работает

•  Пример выполнения запроса

•  Альтернативные решения

Page 9: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Что такое •  Аналитический движок SQL-on-Hadoop

Page 10: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Что такое •  Аналитический движок SQL-on-Hadoop

•  HAdoop With Queries

Page 11: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Что такое •  Аналитический движок SQL-on-Hadoop

•  HAdoop With Queries

Postgres Greenplum HAWQ

2005 Fork Postgres 8.0.2

Page 12: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Что такое •  Аналитический движок SQL-on-Hadoop

•  HAdoop With Queries

Postgres Greenplum HAWQ

2005 Fork Postgres 8.0.2

2009 Rebase Postgres 8.2.15

Page 13: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Что такое •  Аналитический движок SQL-on-Hadoop

•  HAdoop With Queries

Postgres Greenplum HAWQ

2005 Fork Postgres 8.0.2

2009 Rebase Postgres 8.2.15

2011 Fork GPDB 4.2.0.0

Page 14: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Что такое •  Аналитический движок SQL-on-Hadoop

•  HAdoop With Queries

Postgres Greenplum 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

Page 15: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Что такое •  Аналитический движок SQL-on-Hadoop

•  HAdoop With Queries

Postgres Greenplum 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

Page 16: Архитектура HAWQ / Алексей Грищенко (Pivotal)

HAWQ – это … •  1’500’000 строк кода C и C++

Page 17: Архитектура HAWQ / Алексей Грищенко (Pivotal)

HAWQ – это … •  1’500’000 строк кода C и C++

–  Из которых 200’000 только в заголовочных файлах

Page 18: Архитектура HAWQ / Алексей Грищенко (Pivotal)

HAWQ – это … •  1’500’000 строк кода C и C++

–  Из которых 200’000 только в заголовочных файлах

•  180’000 строк кода Python

Page 19: Архитектура HAWQ / Алексей Грищенко (Pivotal)

HAWQ – это … •  1’500’000 строк кода C и C++

–  Из которых 200’000 только в заголовочных файлах

•  180’000 строк кода Python

•  60’000 строк кода Java

Page 20: Архитектура HAWQ / Алексей Грищенко (Pivotal)

HAWQ – это … •  1’500’000 строк кода C и C++

–  Из которых 200’000 только в заголовочных файлах

•  180’000 строк кода Python

•  60’000 строк кода Java

•  23’000 строк Makefile’ов

Page 21: Архитектура HAWQ / Алексей Грищенко (Pivotal)

HAWQ – это … •  1’500’000 строк кода C и C++

–  Из которых 200’000 только в заголовочных файлах

•  180’000 строк кода Python

•  60’000 строк кода Java

•  23’000 строк Makefile’ов

•  7’000 строк shell-скриптов

Page 22: Архитектура HAWQ / Алексей Грищенко (Pivotal)

HAWQ – это … •  1’500’000 строк кода C и C++

–  Из которых 200’000 только в заголовочных файлах

•  180’000 строк кода Python

•  60’000 строк кода Java

•  23’000 строк Makefile’ов

•  7’000 строк shell-скриптов

•  Более 50 корпоративных клиентов

Page 23: Архитектура HAWQ / Алексей Грищенко (Pivotal)

HAWQ – это … •  1’500’000 строк кода C и C++

–  Из которых 200’000 только в заголовочных файлах

•  180’000 строк кода Python

•  60’000 строк кода Java

•  23’000 строк Makefile’ов

•  7’000 строк shell-скриптов

•  Более 50 корпоративных клиентов –  Из них более 10 в EMEA

Page 24: Архитектура HAWQ / Алексей Грищенко (Pivotal)

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

•  Сообщество еще только зарождается – присоединяйтесь!

Page 25: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Зачем он нужен?

Page 26: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Зачем он нужен?

•  Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003

Page 27: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Зачем он нужен?

•  Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003

–  Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций

Page 28: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Зачем он нужен?

•  Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003

–  Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций

•  Универсальный инструмент для ad hoc аналитики

Page 29: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Зачем он нужен?

•  Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003

–  Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций

•  Универсальный инструмент для ad hoc аналитики

–  Пример из практики – распарсить URL, выдернув из него имя хоста и протокол

Page 30: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Зачем он нужен?

•  Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003

–  Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций

•  Универсальный инструмент для ad hoc аналитики

–  Пример из практики – распарсить URL, выдернув из него имя хоста и протокол

•  Хорошая производительность

Page 31: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Зачем он нужен?

•  Универсальный SQL-интерфейс к данным Hadoop для BI с ANSI SQL-92, -99, -2003

–  Пример из практики – запрос Cognos на 5000 строк с множеством оконных функций

•  Универсальный инструмент для ad hoc аналитики

–  Пример из практики – распарсить URL, выдернув из него имя хоста и протокол

•  Хорошая производительность –  Сколько раз данные будут скинуты на HDD для выполнения SQL-запроса в Hive?

Page 32: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Кластер с HAWQ Сервер1

SNameNode

Сервер4

ZK JM

NameNode

Сервер3

ZK JM

Сервер2

ZK JM

Сервер6

Datanode

СерверN

Datanode

Сервер5

Datanode

interconnect

Page 33: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Кластер с HAWQ Сервер1

SNameNode

Сервер4

ZK JM

NameNode

Сервер3

ZK JM

Сервер2

ZK JM

Сервер6

Datanode

СерверN

Datanode

Сервер5

Datanode

YARNNM YARNNM YARNNM

YARNRM YARNAppTimeline

interconnect

Page 34: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Кластер с HAWQ

HAWQMaster

Сервер1

SNameNode

Сервер4

ZK JM

NameNode

Сервер3

ZK JM

HAWQStandby

Сервер2

ZK JM

HAWQSegment

Сервер6

Datanode

HAWQSegment

СерверN

Datanode

HAWQSegment

Сервер5

Datanode

YARNNM YARNNM YARNNM

YARNRM YARNAppTimeline

interconnect

Page 35: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Мастер Сервера Сервер1

SNameNode

Сервер4

ZK JM

NameNode

Сервер3

ZK JM

Сервер2

ZK JM

HAWQSegment

Сервер6

Datanode

HAWQSegment

СерверN

Datanode

HAWQSegment

Сервер5

Datanode

YARNNM YARNNM YARNNM

YARNRM YARNAppTimeline

interconnect

HAWQMaster HAWQStandby

Page 36: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Мастер Сервера

HAWQMaster

Парсерзапросов

Оптимизаторзапросов

Глобальныйменеджерресурсов

Менеджертранзакций

Диспетчерпроцессов

Каталогметаданных

HAWQStandbyMaster

Парсерзапросов

Оптимизаторзапросов

Глобальныйменеджерресурсов

Менеджертранзакций

Диспетчерпроцессов

Каталогметаданных

WALрепл.

Page 37: Архитектура HAWQ / Алексей Грищенко (Pivotal)

HAWQMaster HAWQStandby

Сегменты Сервер1

SNameNode

Сервер4

ZK JM

NameNode

Сервер3

ZK JM

Сервер2

ZK JM

Сервер6

Datanode

СерверN

Datanode

Сервер5

Datanode

YARNNM YARNNM YARNNM

YARNRM YARNAppTimeline

interconnect

HAWQSegment HAWQSegmentHAWQSegment …

Page 38: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Сегменты HAWQSegment

Движоквыполнениязапросов

libhdfs3

РасширенияPXF

HDFSDatanode

ЛокальнаяФСДиректориядля

временныхданных

Логи

YARNNodeManager

Page 39: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Структура аналогична структуре каталога

Postgres

Page 40: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Структура аналогична структуре каталога

Postgres

•  Статистика

Page 41: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Структура аналогична структуре каталога

Postgres

•  Статистика –  Количество записей и страниц в таблице

Page 42: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Структура аналогична структуре каталога

Postgres

•  Статистика –  Количество записей и страниц в таблице

–  Наиболее частые значения для каждого поля

Page 43: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Структура аналогична структуре каталога

Postgres

•  Статистика –  Количество записей и страниц в таблице

–  Наиболее частые значения для каждого поля

–  Гистограмма для каждого числового поля

Page 44: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Структура аналогична структуре каталога

Postgres

•  Статистика –  Количество записей и страниц в таблице

–  Наиболее частые значения для каждого поля

–  Гистограмма для каждого числового поля

–  Количество уникальных значений в поле

Page 45: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Структура аналогична структуре каталога

Postgres

•  Статистика –  Количество записей и страниц в таблице

–  Наиболее частые значения для каждого поля

–  Гистограмма для каждого числового поля

–  Количество уникальных значений в поле

–  Количество null значений в поле

Page 46: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Структура аналогична структуре каталога

Postgres

•  Статистика –  Количество записей и страниц в таблице

–  Наиболее частые значения для каждого поля

–  Гистограмма для каждого числового поля

–  Количество уникальных значений в поле

–  Количество null значений в поле

–  Средний размер значения поля в байтах

Page 47: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Статистика

Без статистики Join двух таблиц, сколько записей в результате?

Page 48: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Статистика

Без статистики Join двух таблиц, сколько записей в результате?

ü  От 0 до бесконечности

Page 49: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Статистика

Без статистики

Количество строк

Join двух таблиц, сколько записей в результате? ü  От 0 до бесконечности

Join двух таблиц по 1000 записей в каждой, сколько записей в результате?

Page 50: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Статистика

Без статистики

Количество строк

Join двух таблиц, сколько записей в результате? ü  От 0 до бесконечности

Join двух таблиц по 1000 записей в каждой, сколько записей в результате?

ü  От 0 до 1’000’000

Page 51: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Статистика

Без статистики

Количество строк

Гистограммы и MCV

Join двух таблиц, сколько записей в результате? ü  От 0 до бесконечности

Join двух таблиц по 1000 записей в каждой, сколько записей в результате?

ü  От 0 до 1’000’000

Join двух таблиц по 1000 записей в каждой, с известной кардинальностью, гистограммой распределения, наиболее частыми значениями, количеством null?

Page 52: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Статистика

Без статистики

Количество строк

Гистограммы и MCV

Join двух таблиц, сколько записей в результате? ü  От 0 до бесконечности

Join двух таблиц по 1000 записей в каждой, сколько записей в результате?

ü  От 0 до 1’000’000

Join двух таблиц по 1000 записей в каждой, с известной кардинальностью, гистограммой распределения, наиболее частыми значениями, количеством null?

ü  ~ От 500 до 1’500

Page 53: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Информация о структуре таблицы

ID Name Num Price1 Яблоко 10 502 Груша 20 803 Банан 40 404 Апельсин 25 505 Киви 5 1206 Арбуз 20 307 Дыня 40 1008 Ананас 35 90

Page 54: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Информация о структуре таблицы

–  Поля распределения

ID Name Num Price1 Яблоко 10 502 Груша 20 803 Банан 40 404 Апельсин 25 505 Киви 5 1206 Арбуз 20 307 Дыня 40 1008 Ананас 35 90

hash(ID)

Page 55: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Информация о структуре таблицы

–  Поля распределения

–  Количество hash bucket распределения

ID Name Num Price1 Яблоко 10 502 Груша 20 803 Банан 40 404 Апельсин 25 505 Киви 5 1206 Арбуз 20 307 Дыня 40 1008 Ананас 35 90

hash(ID)

ID Name Num Price1 Яблоко 10 50

2 Груша 20 803 Банан 40 40

4 Апельсин 25 505 Киви 5 120

6 Арбуз 20 307 Дыня 40 100

8 Ананас 35 90

Page 56: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Информация о структуре таблицы

–  Поля распределения

–  Количество hash bucket распределения

–  Партиционирование (hash, list, range)

ID Name Num Price1 Яблоко 10 502 Груша 20 803 Банан 40 404 Апельсин 25 505 Киви 5 1206 Арбуз 20 307 Дыня 40 1008 Ананас 35 90

hash(ID)

ID Name Num Price1 Яблоко 10 50

2 Груша 20 803 Банан 40 40

4 Апельсин 25 50

5 Киви 5 1206 Арбуз 20 307 Дыня 40 100

8 Ананас 35 90

Page 57: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Информация о структуре таблицы

–  Поля распределения

–  Количество hash bucket распределения

–  Партиционирование (hash, list, range)

•  Общие метаданные –  Пользователи и группы

Page 58: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Информация о структуре таблицы

–  Поля распределения

–  Количество hash bucket распределения

–  Партиционирование (hash, list, range)

•  Общие метаданные –  Пользователи и группы

–  Права доступа к объектам

Page 59: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Метаданные •  Информация о структуре таблицы

–  Поля распределения

–  Количество hash bucket распределения

–  Партиционирование (hash, list, range)

•  Общие метаданные –  Пользователи и группы

–  Права доступа к объектам

•  Хранимые процедуры –  PL/pgSQL, PL/Java, PL/Python, PL/Perl, PL/R

Page 60: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Оптимизатор Запросов •  Используется cost-based оптимизатор

Page 61: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Оптимизатор Запросов •  Используется cost-based оптимизатор

•  Выбрать можно один из двух

Page 62: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Оптимизатор Запросов •  Используется cost-based оптимизатор

•  Выбрать можно один из двух –  Planner – модифицированный оптимизатор

Postgres

Page 63: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Оптимизатор Запросов •  Используется cost-based оптимизатор

•  Выбрать можно один из двух –  Planner – модифицированный оптимизатор

Postgres

–  ORCA (Pivotal Query Optimizer) – разработан специально для HAWQ

Page 64: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Оптимизатор Запросов •  Используется cost-based оптимизатор

•  Выбрать можно один из двух –  Planner – модифицированный оптимизатор

Postgres

–  ORCA (Pivotal Query Optimizer) – разработан специально для HAWQ

•  Хинты оптимизатора работают как в Postgres

Page 65: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Оптимизатор Запросов •  Используется cost-based оптимизатор

•  Выбрать можно один из двух –  Planner – модифицированный оптимизатор

Postgres

–  ORCA (Pivotal Query Optimizer) – разработан специально для HAWQ

•  Хинты оптимизатора работают как в Postgres –  Включить/отключить определенную операцию

Page 66: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Оптимизатор Запросов •  Используется cost-based оптимизатор

•  Выбрать можно один из двух –  Planner – модифицированный оптимизатор

Postgres

–  ORCA (Pivotal Query Optimizer) – разработан специально для HAWQ

•  Хинты оптимизатора работают как в Postgres –  Включить/отключить определенную операцию

–  Изменить веса базовых операций

Page 67: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения Какой формат хранения данных является наиболее оптимальным?

Page 68: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения Какой формат хранения данных является наиболее оптимальным?

ü  Зависит от того, что является для вас критерием оптимальности

Page 69: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения Какой формат хранения данных является наиболее оптимальным?

ü  Зависит от того, что является для вас критерием оптимальности –  Минимальное потребление ресурсов CPU

Page 70: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения Какой формат хранения данных является наиболее оптимальным?

ü  Зависит от того, что является для вас критерием оптимальности –  Минимальное потребление ресурсов CPU

–  Минимальный объем занимаемого дискового пр-ва

Page 71: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения Какой формат хранения данных является наиболее оптимальным?

ü  Зависит от того, что является для вас критерием оптимальности –  Минимальное потребление ресурсов CPU

–  Минимальный объем занимаемого дискового пр-ва

–  Минимальное время извлечения записи по ключу

Page 72: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения Какой формат хранения данных является наиболее оптимальным?

ü  Зависит от того, что является для вас критерием оптимальности –  Минимальное потребление ресурсов CPU

–  Минимальный объем занимаемого дискового пр-ва

–  Минимальное время извлечения записи по ключу

–  Минимальное время извлечения подмножества столбцов таблицы

Page 73: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения Какой формат хранения данных является наиболее оптимальным?

ü  Зависит от того, что является для вас критерием оптимальности –  Минимальное потребление ресурсов CPU

–  Минимальный объем занимаемого дискового пр-ва

–  Минимальное время извлечения записи по ключу

–  Минимальное время извлечения подмножества столбцов таблицы

–  что-то другое?

Page 74: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения •  Построчное хранение

–  «Обрезанный» формат postgres

•  Без toast

•  Без ctid, xmin, xmax, cmin, cmax

Page 75: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения •  Построчное хранение

–  «Обрезанный» формат postgres

•  Без toast

•  Без ctid, xmin, xmax, cmin, cmax

–  Сжатие •  Без сжатия

•  Quicklz

•  Zlib уровни 1 - 9

Page 76: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения •  Apache Parquet

–  Поколоночное хранение блоков последовательных строк (“row group”)

Page 77: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения •  Apache Parquet

–  Поколоночное хранение блоков последовательных строк (“row group”)

–  Сжатие •  Без сжатия

•  Snappy

•  Gzip уровни 1 – 9

Page 78: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Формат Хранения •  Apache Parquet

–  Поколоночное хранение блоков последовательных строк (“row group”)

–  Сжатие •  Без сжатия

•  Snappy

•  Gzip уровни 1 – 9

–  Размер “row group” и страницы задается для каждой таблицы отдельно

Page 79: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Два основных варианта

Page 80: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Два основных варианта

–  Независимое разделение – HAWQ и YARN не знают друг о друге

Page 81: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Два основных варианта

–  Независимое разделение – HAWQ и YARN не знают друг о друге

–  YARN – HAWQ запрашивает выделение ресурсов у менеджера ресурсов YARN

Page 82: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Два основных варианта

–  Независимое разделение – HAWQ и YARN не знают друг о друге

–  YARN – HAWQ запрашивает выделение ресурсов у менеджера ресурсов YARN

•  Гибкая утилизация кластера –  Запрос может выполняться на части нод

Page 83: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Два основных варианта

–  Независимое разделение – HAWQ и YARN не знают друг о друге

–  YARN – HAWQ запрашивает выделение ресурсов у менеджера ресурсов YARN

•  Гибкая утилизация кластера –  Запрос может выполняться на части нод

–  Запрос может иметь несколько потоков исполнения на каждой из нод

Page 84: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Два основных варианта

–  Независимое разделение – HAWQ и YARN не знают друг о друге

–  YARN – HAWQ запрашивает выделение ресурсов у менеджера ресурсов YARN

•  Гибкая утилизация кластера –  Запрос может выполняться на части нод

–  Запрос может иметь несколько потоков исполнения на каждой из нод

–  Желаемый параллелизм можно задать вручную

Page 85: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Пулы ресурсов (Resource Queue) задают

Page 86: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Пулы ресурсов (Resource Queue) задают

–  Количество параллельных запросов

Page 87: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Пулы ресурсов (Resource Queue) задают

–  Количество параллельных запросов

–  Приоритет на использование CPU

Page 88: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Пулы ресурсов (Resource Queue) задают

–  Количество параллельных запросов

–  Приоритет на использование CPU

–  Лимит по памяти

Page 89: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Пулы ресурсов (Resource Queue) задают

–  Количество параллельных запросов

–  Приоритет на использование CPU

–  Лимит по памяти

–  Лимит по ядрам CPU

Page 90: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Пулы ресурсов (Resource Queue) задают

–  Количество параллельных запросов

–  Приоритет на использование CPU

–  Лимит по памяти

–  Лимит по ядрам CPU

–  MIN/MAX потоков исполнения в целом по системе

Page 91: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Пулы ресурсов (Resource Queue) задают

–  Количество параллельных запросов

–  Приоритет на использование CPU

–  Лимит по памяти

–  Лимит по ядрам CPU

–  MIN/MAX потоков исполнения в целом по системе

–  MIN/MAX потоков исполнения на каждой ноде

Page 92: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Разделение Ресурсов •  Пулы ресурсов (Resource Queue) задают

–  Количество параллельных запросов

–  Приоритет на использование CPU

–  Лимит по памяти

–  Лимит по ядрам CPU

–  MIN/MAX потоков исполнения в целом по системе

–  MIN/MAX потоков исполнения на каждой ноде

•  Задаются для пользователя или группы

Page 93: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Внешние Данные •  PXF

–  Фреймворк для доступа к внешним данным

–  Легко расширяется, многие пишут свои плагины

–  Официальные плагины: CSV, SequenceFile, Avro, Hive, HBase

–  Open Source плагины: JSON, Accumulo, Cassandra, JDBC, Redis, Pipe

Page 94: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Внешние Данные •  PXF

–  Фреймворк для доступа к внешним данным

–  Легко расширяется, многие пишут свои плагины

–  Официальные плагины: CSV, SequenceFile, Avro, Hive, HBase

–  Open Source плагины: JSON, Accumulo, Cassandra, JDBC, Redis, Pipe

•  HCatalog –  HAWQ видит таблицы из HCatalog как свои внутренние таблицы

Page 95: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRMДвижок

Ресурсы Подготовка Исполнение Результат ЗавершениеПлан

Page 96: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Ресурсы Подготовка Исполнение Результат ЗавершениеПлан

Page 97: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Ресурсы Подготовка Исполнение Результат ЗавершениеПлан

Page 98: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Ресурсы Подготовка Исполнение Результат ЗавершениеПлан

Page 99: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Ресурсы Подготовка Исполнение Результат ЗавершениеПлан

Page 100: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

Ресурсы Подготовка Исполнение Результат ЗавершениеПлан

Page 101: Архитектура HAWQ / Алексей Грищенко (Pivotal)

План

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Подготовка Исполнение Результат ЗавершениеРесурсы

Page 102: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Нужно5контейнеровКаждыйпо1ядруи256MBRAM

План Подготовка Исполнение Результат ЗавершениеРесурсы

Page 103: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Нужно5контейнеровКаждыйпо1ядруи256MBRAM

Сервер1:2контейнераСервер2:1контейнерСерверN:2контейнера

План Подготовка Исполнение Результат ЗавершениеРесурсы

Page 104: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Нужно5контейнеровКаждыйпо1ядруи256MBRAM

Сервер1:2контейнераСервер2:1контейнерСерверN:2контейнера

План Подготовка Исполнение Результат ЗавершениеРесурсы

Page 105: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Нужно5контейнеровКаждыйпо1ядруи256MBRAM

Сервер1:2контейнераСервер2:1контейнерСерверN:2контейнера

План Подготовка Исполнение Результат ЗавершениеРесурсы

Page 106: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

Нужно5контейнеровКаждыйпо1ядруи256MBRAM

Сервер1:2контейнераСервер2:1контейнерСерверN:2контейнера

QE QE QE QE QE

План Подготовка Исполнение Результат ЗавершениеРесурсы

Page 107: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Ресурсы

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

План Исполнение Результат ЗавершениеПодготовка

Page 108: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

РесурсыПлан Исполнение Результат ЗавершениеПодготовка

Page 109: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

РесурсыПлан Исполнение Результат ЗавершениеПодготовка

Page 110: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Подготовка

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

РесурсыПлан Результат ЗавершениеИсполнение

Page 111: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

ПодготовкаРесурсыПлан Результат ЗавершениеИсполнение

Page 112: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

ПодготовкаРесурсыПлан Результат ЗавершениеИсполнение

Page 113: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Исполнение

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

ПодготовкаРесурсыПлан ЗавершениеРезультат

Page 114: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

ИсполнениеПодготовкаРесурсыПлан ЗавершениеРезультат

Page 115: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

ИсполнениеПодготовкаРесурсыПлан ЗавершениеРезультат

Page 116: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Результат

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ИсполнениеПодготовкаРесурсыПлан Завершение

Page 117: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

ОсвобождаемСервер1:2контейнераСервер2:1контейнерСерверN:2контейнера

РезультатИсполнениеПодготовкаРесурсыПлан Завершение

Page 118: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

Ок

ОсвобождаемСервер1:2контейнераСервер2:1контейнерСерверN:2контейнера

РезультатИсполнениеПодготовкаРесурсыПлан Завершение

Page 119: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

Ок

ОсвобождаемСервер1:2контейнераСервер2:1контейнерСерверN:2контейнера

РезультатИсполнениеПодготовкаРесурсыПлан Завершение

Page 120: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

Ок

ОсвобождаемСервер1:2контейнераСервер2:1контейнерСерверN:2контейнера

РезультатИсполнениеПодготовкаРесурсыПлан Завершение

Page 121: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

Ок

ОсвобождаемСервер1:2контейнераСервер2:1контейнерСерверN:2контейнера

РезультатИсполнениеПодготовкаРесурсыПлан Завершение

Page 122: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Завершение

Жизненный Цикл Запроса HAWQMaster

Метаданные

Менедж.тр-й

Парсер Опт.запросов

Диспетч.проц.

Менедж.рес-ов

NameNode

Сервер1

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

Сервер2

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

СерверN

Локальнаядиректория

HAWQSegmentДвижок

HDFSDatanode

YARNRMДвижок

РезультатИсполнениеПодготовкаРесурсыПлан

Page 123: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Скорость •  Данные не приземляются на диск без необходимости

Page 124: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Скорость •  Данные не приземляются на диск без необходимости

•  Данные не буферизируются на сегментах без необходимости

Page 125: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Скорость •  Данные не приземляются на диск без необходимости

•  Данные не буферизируются на сегментах без необходимости

•  Данные передаются между нодами по UDP

Page 126: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Скорость •  Данные не приземляются на диск без необходимости

•  Данные не буферизируются на сегментах без необходимости

•  Данные передаются между нодами по UDP

•  Хороший стоимостной оптимизатор запросов

Page 127: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Скорость •  Данные не приземляются на диск без необходимости

•  Данные не буферизируются на сегментах без необходимости

•  Данные передаются между нодами по UDP

•  Хороший стоимостной оптимизатор запросов

•  Оптимальность кода на C++

Page 128: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Скорость •  Данные не приземляются на диск без необходимости

•  Данные не буферизируются на сегментах без необходимости

•  Данные передаются между нодами по UDP

•  Хороший стоимостной оптимизатор запросов

•  Оптимальность кода на C++

•  Гибкая настройка параллелизма

Page 129: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Альтернативы Hive SparkSQL Impala HAWQ

Оптимизатор

Page 130: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Альтернативы Hive SparkSQL Impala HAWQ

Оптимизатор

ANSISQL

Page 131: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Альтернативы Hive SparkSQL Impala HAWQ

Оптимизатор

ANSISQL

Встроенныеязыки

Page 132: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Альтернативы Hive SparkSQL Impala HAWQ

Оптимизатор

ANSISQL

Встроенныеязыки

Нагрузканадиски

Page 133: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Альтернативы Hive SparkSQL Impala HAWQ

Оптимизатор

ANSISQL

Встроенныеязыки

Нагрузканадиски

Параллелизм

Page 134: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Альтернативы Hive SparkSQL Impala HAWQ

Оптимизатор

ANSISQL

Встроенныеязыки

Нагрузканадиски

Параллелизм

Дистрибутивы

Page 135: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Альтернативы Hive SparkSQL Impala HAWQ

Оптимизатор

ANSISQL

Встроенныеязыки

Нагрузканадиски

Параллелизм

Дистрибутивы

Стабильность

Page 136: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Альтернативы Hive SparkSQL Impala HAWQ

Оптимизатор

ANSISQL

Встроенныеязыки

Нагрузканадиски

Параллелизм

Дистрибутивы

Стабильность

Сообщество

Page 137: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Задачи •  Интеграция с AWS и S3

Page 138: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Задачи •  Интеграция с AWS и S3

•  Интеграция с Mesos

Page 139: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Задачи •  Интеграция с AWS и S3

•  Интеграция с Mesos

•  Улучшение интеграции с Ambari

Page 140: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Задачи •  Интеграция с AWS и S3

•  Интеграция с Mesos

•  Улучшение интеграции с Ambari

•  Интеграция с дистрибутивами Cloudera, MapR, IBM

Page 141: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Задачи •  Интеграция с AWS и S3

•  Интеграция с Mesos

•  Улучшение интеграции с Ambari

•  Интеграция с дистрибутивами Cloudera, MapR, IBM

•  Сделать самый быстрый и удобный движок SQL-on-Hadoop

Page 142: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Заключение

•  Современный движок SQL-on-Hadoop

•  Для анализа структурированных данных

•  Объединяет в себе лучшие качества альтернативных решений

•  Новичок среди open source

•  Community на стадии зарождения

Присоединяйтесь!

Page 143: Архитектура HAWQ / Алексей Грищенко (Pivotal)

Вопросы

Apache HAWQ

http://hawq.incubator.apache.org

[email protected]

[email protected]

Связь со мной: http://0x0fff.com