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

Post on 19-Jan-2017

397 Views

Category:

Engineering

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Архитектура 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 Greenplum HAWQ

2005 Fork Postgres 8.0.2

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

•  HAdoop With Queries

Postgres Greenplum HAWQ

2005 Fork Postgres 8.0.2

2009 Rebase Postgres 8.2.15

Что такое •  Аналитический движок 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

Что такое •  Аналитический движок 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

Что такое •  Аналитический движок 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

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

YARNNM YARNNM YARNNM

YARNRM YARNAppTimeline

interconnect

Кластер с 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

Мастер Сервера Сервер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

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

HAWQMaster

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

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

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

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

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

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

HAWQStandbyMaster

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

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

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

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

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

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

WALрепл.

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 …

Сегменты HAWQSegment

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

libhdfs3

РасширенияPXF

HDFSDatanode

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

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

Логи

YARNNodeManager

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

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 Price1 Яблоко 10 502 Груша 20 803 Банан 40 404 Апельсин 25 505 Киви 5 1206 Арбуз 20 307 Дыня 40 1008 Ананас 35 90

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

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

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

hash(ID)

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

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

–  Количество 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

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

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

–  Количество 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

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

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

–  Количество 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 как свои внутренние таблицы

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRMДвижок

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

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

Жизненный Цикл Запроса 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)

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

План

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

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

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

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

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

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

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

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

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

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

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

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

Жизненный Цикл Запроса 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

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

Ресурсы

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

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

Жизненный Цикл Запроса 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)

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

Жизненный Цикл Запроса 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)

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

Подготовка

Жизненный Цикл Запроса 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)

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

Жизненный Цикл Запроса 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)

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

Жизненный Цикл Запроса 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)

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

Исполнение

Жизненный Цикл Запроса 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)

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

Жизненный Цикл Запроса 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)

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

Жизненный Цикл Запроса 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)

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

Результат

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

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

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

Ок

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

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

Ок

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

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

Ок

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

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

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRM

QE

Движок

QE QE QE QE QE

Ок

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

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

Завершение

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

Метаданные

Менедж.тр-й

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

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

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

NameNode

Сервер1

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

HAWQSegmentДвижок

HDFSDatanode

Сервер2

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

HAWQSegmentДвижок

HDFSDatanode

СерверN

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

HAWQSegmentДвижок

HDFSDatanode

YARNRMДвижок

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оптимизатор

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

Оптимизатор

ANSISQL

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

Оптимизатор

ANSISQL

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

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

Оптимизатор

ANSISQL

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

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

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

Оптимизатор

ANSISQL

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

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

Параллелизм

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

Оптимизатор

ANSISQL

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

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

Параллелизм

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

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

Оптимизатор

ANSISQL

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

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

Параллелизм

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

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

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

Оптимизатор

ANSISQL

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

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

Параллелизм

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

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

Сообщество

Задачи •  Интеграция с 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

top related