pgday apache hawq apache hawq.pdf · Применение apache hawq •...

53
1 © Copyright 2016 EMC Corporation. All rights reserved. APACHE HAWQ SQL для HADOOP на базе PostgreSQL

Upload: donga

Post on 30-Jul-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

1© Copyright 2016 EMC Corporation. All rights reserved.

APACHE HAWQSQL для HADOOP на базе PostgreSQL

Page 2: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

2© Copyright 2016 EMC Corporation. All rights reserved.

Содержание

• Что такое Apache HAWQ?

• Архитектура• Форматы хранения данных

• Разделение ресурсов

• Выполнение запросов

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

Page 3: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

3© Copyright 2016 EMC Corporation. All rights reserved.

Что такое Apache HAWQ

Page 4: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

4© Copyright 2016 EMC Corporation. All rights reserved.

Apache HAWQ

• HAdoop With Queries

• «Движок» для осуществления SQL запросов к Hadoop с богатыми аналитическими возможностями

Page 5: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

5© Copyright 2016 EMC Corporation. All rights reserved.

История проекта

2005

2009

2011

2013

2015

2016

ForkPostgres 8.0.2

Rebase

Postgres 8.3.2

Postgres 8.2.15Rebase

ForkGreenplum 4.2.0

HAWQ 1.0

HAWQ 2.0Open Source

HAWQ 2.0ODPi Compliant

Postgres Greenplum HAWQ

Page 6: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

6© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ – Это …

• 1’500’000 строк кода C и C++– Из которых 200’000 заголовочных файлов

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

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

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

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

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

Page 7: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

7© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ – Open Source

• Apache HAWQ (incubating) c 09.2015– http://hawq.incubator.apache.org

– https://github.com/apache/incubator-hawq

• Что находится в Open Source– Исходный код HAWQ 2.0

– ORCA Optimizer

– Pivotal Extension Framework (PXF)

Page 8: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

8© Copyright 2016 EMC Corporation. All rights reserved.

Применение Apache HAWQ

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

ANSI SQL-93,-99,-2003– Пример из практики – запрос Cognos на 5000 строк с

множеством функций

• Универсальный инструмент для ad-hoc аналитики– Пример из практики распарсить URL, извлечь из него имя хоста и

пртокол

• Хорошая производительность– Отказ от использования MR и применение оптимизатора плана

выполнения

Page 9: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

9© Copyright 2016 EMC Corporation. All rights reserved.

Архитектура HAWQ

Page 10: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

10© Copyright 2016 EMC Corporation. All rights reserved.

Кластер HAWQServer 1 Server 2 Server 3 Server 4

Server MServer 5 Server 6

HAWQ Master

HAWQ Segm.

HAWQ SBMstr

NameNode SNameNode

ZK QJMZK QJMZK QJM

Datanode

HAWQ Segm.

Datanode

HAWQ Segm.

Datanode

YARN RM

YARN NM YARN NM YARN NM

Page 11: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

11© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Segments

HAWQMasters

Yarn

PhysicalSegment

Client

Parser/AnalyzerOptimizer

Dispatcher

DataNodeNodeManager

NameNodeNameNode

External Data Stores Xtension Framework (Hive/HBase/etc)

ResourceManager

FaultToleranceService

CatalogService

VirtualSegment

VirtualSegment

PhysicalSegment

DataNodeNodeManager

VirtualSegment

VirtualSegment

PhysicalSegment

DataNodeNodeManager

VirtualSegment

VirtualSegment

ResourceBroker

libYARN

HDFSCatalogCache

Interconnect Interconnect

Архитектура HAWQ 2.0

Page 12: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

12© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Query Parser

Query Optimizer

Query Executor

Transaction Manager

Process Manager

Metadata Catalog

HAWQ Standby Master

Query Parser

Query Optimizer

Query Executor

Transaction Manager

Process Manager

Metadata Catalog

WALreplication

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

Page 13: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

13© Copyright 2016 EMC Corporation. All rights reserved.

Метаданные

• Структура аналогична структуре каталога Postgres

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

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

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

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

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

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

Page 14: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

14© Copyright 2016 EMC Corporation. All rights reserved.

Метаданные

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

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

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

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

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

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

Page 15: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

15© Copyright 2016 EMC Corporation. All rights reserved.

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

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

• Количество записей– Join двух таблиц по 1000 записей в каждой, потребует перебор записей:

• От 0 до 1’000’000

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

• От 500 до 1’500

Page 16: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

16© Copyright 2016 EMC Corporation. All rights reserved.

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

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

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

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

портирован на Greenplum

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

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

Page 17: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

17© Copyright 2016 EMC Corporation. All rights reserved.

SELECT * FROM r JOIN p ON r.a = p.a

QUERY PLAN ---------------------------------------------------------------------------------------------------Gather Motion 2:1 (slice2; segments: 2) (cost=39.01..3653.51 rows=50450 width=16)-> Hash Join (cost=39.01..3653.51 rows=50450 width=16)

Hash Cond: public.p.a = public.r.aInitPlan (slice3)-> Aggregate (cost=14.50..14.51 rows=1 width=32)

-> Gather Motion 2:1 (slice1; segments: 2) (cost=0.00..12.00 rows=500 width=8)-> Seq Scan on r (cost=0.00..12.00 rows=500 width=8)

-> Append (cost=0.00..2101.00 rows=50450 width=8)-> Result (cost=0.00..1.99 rows=50 width=8)

One-Time Filter: 30607::oid = ANY ($0)-> Seq Scan on p_1_prt_extra p (cost=0.00..1.99 rows=50 width=8)

-> Result (cost=0.00..12.00 rows=500 width=8)One-Time Filter: 30630::oid = ANY ($0)-> Seq Scan on p_1_prt_2 p (cost=0.00..12.00 rows=500 width=8)

(3014 rows)

QUERY PLAN --------------------------------------------------------------------------------------------Gather Motion 2:1 (slice1; segments: 2) (cost=10.00..100.00 rows=1 width=12)

-> Hash Join (cost=10.00..100.00 rows=1 width=12)Hash Cond: p.a = r.a-> Dynamic Table Scan on p (partIndex: 1) (cost=10.00..100.00

rows=500 width=12)-> Hash (cost=100.00..100.00 rows=500 width=12)

-> Result (cost=10.00..100.00 rows=500 width=12)-> Seq Scan on r (cost=10.00..100.00 rows=500 width=12)

Settings: optimizer=on

(8 rows)

Legacy Optimizer Orca

Пример плана

Page 18: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

18© Copyright 2016 EMC Corporation. All rights reserved.

Адмнистрирование и мониторинг

Page 19: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

19© Copyright 2016 EMC Corporation. All rights reserved.

Примеры

Page 20: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

20© Copyright 2016 EMC Corporation. All rights reserved.

Форматы хранения данных

Page 21: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

21© Copyright 2016 EMC Corporation. All rights reserved.

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

Зависит от критерия оптимальности:

• Минимальное потребление ресурсов CPU

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

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

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

• Etc…

Page 22: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

22© Copyright 2016 EMC Corporation. All rights reserved.

Формат хранения

• Построчное хранение– Модифицированный формат postgres

• Без toast

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

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

• Quicklz

• Zlib уровни 1 - 9

Page 23: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

23© Copyright 2016 EMC Corporation. All rights reserved.

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

– Поколоночное хранение блоков последовательности строк

(“row group”)

Page 24: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

24© Copyright 2016 EMC Corporation. All rights reserved.

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

– Поколоночное хранение блоков последовательности строк

(“row group”)

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

• Snappy

• Gzip уровни 1 – 9

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

отдельно

Page 25: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

25© Copyright 2016 EMC Corporation. All rights reserved.

Внешние данные

• PXF (Pivotal Extension Framework)– Фреймворк для доступа к внешним данным

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

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

– Open Source плагины: JSON, Accumolo, Cassandra, JDBC,

Redis, Pipe

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

Page 26: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

26© Copyright 2016 EMC Corporation. All rights reserved.

Разделение ресурсов

Page 27: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

27© Copyright 2016 EMC Corporation. All rights reserved.

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

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

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

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

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

узле

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

Page 28: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

28© Copyright 2016 EMC Corporation. All rights reserved.

Разделение ресурсов

• Пулы ресурсов (Resource Queues) задают– Количество параллельных запросов

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

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

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

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

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

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

Page 29: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

29© Copyright 2016 EMC Corporation. All rights reserved.

pg_root

dept1 dept2

adhoc1 daily_batch

monthly_report

dept3

adhoc2 daily_report

ceo_reportpg_default

Branch RQs

LeafRQs

DefaultRQs

Иерархические ресурсные очереди

Page 30: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

30© Copyright 2016 EMC Corporation. All rights reserved.

Выполнение запросов

Page 31: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

31© Copyright 2016 EMC Corporation. All rights reserved.

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

процессом– Возможно Scale-up/down масштабирование

– Возможно Scale-in/out масштабирование

• Использование: “block level storage” и

“virtual segments”– Поддержка использования блоков данных

– Использование узлов хранящих требуемые блоки

– Запуск запросов на узлах, обладающих требуемыми

свободными ресурсами

– Запуск ”virtual segment” по запросу

VirtualSegment

VirtualSegment

Blocks Blocks Blocks

VirtualSegment

Выполнение запросов

Page 32: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

32© Copyright 2016 EMC Corporation. All rights reserved.

• Каждый узел имеет только один логический сегмент HAWQ

– Простота в настройке и установке

– Простата в оптимизации производительности

• Количество “virtual segments” используемых для запроса

– Определяет параллелизм запроса

– Каждый ”virtual segment” равен одному процессу Postgres

• Как определить количество ”virtual segment” необходимых для выполнения

запроса

– Объем ресурсов необходимых для выполнения запроса

– «Стоимость» запроса, Data locality, RQ Definitions

– Распределение таблицы: Hash vs Random

– UDFs и external tables

Выполнение запросов

Page 33: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

33© Copyright 2016 EMC Corporation. All rights reserved.

Простойзапрос HAWQMaster

Low#ofv-segs

Сложный запрос HAWQMaster

High#ofv-segs

ЗапроспоHashраспределениюилиRQ

HAWQMaster

Pre-defined#ofv-segs/buckets

HAWQ Node

HAWQ Cluster

Virtual Segment

Выполнение запросов

Page 34: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

34© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Metadata

Transact. Mgr.

Parser Query Optimiz.

Process Mgr.

Query Executor NameNode

Local Spill Directory

Server 1

Backend

HDFS Datanode

Local Spill Directory

Server 2

Backend

HDFS Datanode

YARN RM

Выполнение запроса

Local Spill Directory

Server N

Backend

HDFS Datanode

Page 35: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

35© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Metadata

Transact. Mgr.

Parser Query Optimiz.

Process Mgr.

Query Executor NameNode

Local Spill Directory

Server 1

Backend

HDFS Datanode

Local Spill Directory

Server 2

Backend

HDFS Datanode

YARN RM

Выполнение запроса

Local Spill Directory

Server N

Backend

HDFS Datanode

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

Page 36: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

36© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Metadata

Transact. Mgr.

Parser Query Optimiz.

Process Mgr.

Query Executor NameNode

Local Spill Directory

Server 1

Backend

HDFS Datanode

Local Spill Directory

Server 2

Backend

HDFS Datanode

YARN RM

Выполнение запроса

Local Spill Directory

Server N

Backend

HDFS Datanode

Требуется 5 контейнеров,Каждый 1 ядро и 64ГБ RAM

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

QE QE QE QE QE

Page 37: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

37© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Metadata

Transact. Mgr.

Parser Query Optimiz.

Process Mgr.

Query Executor NameNode

Local Spill Directory

Server 1

Backend

HDFS Datanode

Local Spill Directory

Server 2

Backend

HDFS Datanode

YARN RM

Выполнение запроса

Local Spill Directory

Server N

Backend

HDFS Datanode

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

Page 38: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

38© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Metadata

Transact. Mgr.

Parser Query Optimiz.

Process Mgr.

Query Executor NameNode

Local Spill Directory

Server 1

Backend

HDFS Datanode

Local Spill Directory

Server 2

Backend

HDFS Datanode

YARN RM

Выполнение запроса

Local Spill Directory

Server N

Backend

HDFS Datanode

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

Page 39: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

39© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Metadata

Transact. Mgr.

Parser Query Optimiz.

Process Mgr.

Query Executor NameNode

Local Spill Directory

Server 1

Backend

HDFS Datanode

Local Spill Directory

Server 2

Backend

HDFS Datanode

YARN RM

Выполнение запроса

Local Spill Directory

Server N

Backend

HDFS Datanode

QE QE QE QE QE

ScanBarsb

HashJoinb.name = s.bar

ScanSellss Filterb.city = 'San Francisco'

Projects.beer, s.price

MotionGather

MotionRedist(b.name)

Page 40: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

40© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Metadata

Transact. Mgr.

Parser Query Optimiz.

Process Mgr.

Query Executor NameNode

Local Spill Directory

Server 1

Backend

HDFS Datanode

Local Spill Directory

Server 2

Backend

HDFS Datanode

YARN RM

Выполнение запроса

Local Spill Directory

Server N

Backend

HDFS Datanode

QE QE QE QE QE

Page 41: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

41© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Metadata

Transact. Mgr.

Parser Query Optimiz.

Process Mgr.

Query Executor NameNode

Local Spill Directory

Server 1

Backend

HDFS Datanode

Local Spill Directory

Server 2

Backend

HDFS Datanode

YARN RM

Выполнение запроса

Local Spill Directory

Server N

Backend

HDFS Datanode

QE QE QE QE QE

Запрос выполнен

Освобождаем контейнеры:Сервер 1, …

Page 42: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

42© Copyright 2016 EMC Corporation. All rights reserved.

HAWQ Master

Metadata

Transact. Mgr.

Parser Query Optimiz.

Process Mgr.

Query Executor NameNode

Local Spill Directory

Server 1

Backend

HDFS Datanode

Local Spill Directory

Server 2

Backend

HDFS Datanode

YARN RM

Выполнение запроса

Local Spill Directory

Server N

Backend

HDFS Datanode

Контейнеры освобождены

Page 43: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

43© Copyright 2016 EMC Corporation. All rights reserved.

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

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

необходимости

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

• Отличный cost-based оптимизатор

• Быстрый код написанный на C++

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

Итого…

Page 44: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

44© Copyright 2016 EMC Corporation. All rights reserved.

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

Page 45: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

45© Copyright 2016 EMC Corporation. All rights reserved.

Hive

2008

� Разработка Facebook– Используется для анализа данных в их хранилище– Хранилище имеет размер ~300PB, ежедневно загружается ~600TB

данных. Данные сжаты ORCFile, коэффициент ~8x

� Синтаксис HiveQL не соответствует ANSI SQL-92

� Множество ограничений на подзапросы

� Cost-based оптимизатор (Optiq) пока в стадии technical preview

Решения SQL-on-Hadoop

Page 46: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

46© Copyright 2016 EMC Corporation. All rights reserved.

Hive

2008

� Разработка Cloudera– Open-source решение– Cloudera продает поддержку этого решения корпоративным клиентам– До мая 2013 находилась в стадии бэта

� Поддержка HiveQL, развитие в сторону поддержки ANSI SQL-92

� Написана на C++ и не использует Map-Reduce для исполнения

� Требует много памяти, Join больших таблиц часто приводит к OOM

Impala

10.2012

Решения SQL-on-Hadoop

Page 47: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

47© Copyright 2016 EMC Corporation. All rights reserved.

Hive

2008

� Разработка Hortonworks– Содержит в себе шаги по улучшению производительности Hive

� Tez – выполнение сгенерированного Hive кода без приземления промежуточных данных на диск между независимыми map-reduce

� Optiq – cost-based оптимизатор запросов (пока technical preview)

� ORCFile – адаптивное сжатие данных и встроенный индекс

� Hive-5317 – ACID и поддержка update/delete (релиз через ~2месяца)

Impala

10.2012

Stinger

02.2013

Решения SQL-on-Hadoop

Page 48: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

48© Copyright 2016 EMC Corporation. All rights reserved.

Hive

2008

� Разработка Pivotal– СУБД Greenplum, портированная на HDFS– Написан на C, оптимизатор запросов переписан для этого решения

� Поддержка ANSI SQL-92, аналитических расширений SQL-2003

� Поддержка сложных запросов с корелированными подзапросами, сложными оконными функциями и различными join’ами

� Данные приземляются на диск только в случае нехватки памяти

Impala

10.2012

Stinger

02.2013

HAWQ

02.2013

Решения SQL-on-Hadoop

Page 49: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

49© Copyright 2016 EMC Corporation. All rights reserved.

Hive

2008

� HP Vertica– Поддержка ANSI SQL-92, SQL-2003– Поддержка UPDATE/DELETE

� IBM BigSQL v3– IBM DB2, портированная на HDFS– Федеративные запросы, полноценный оптимизатор запросов, etc.

Impala

10.2012

Stinger

02.2013

HAWQ

02.2013

Vertica,BigSQL

2014

Решения SQL-on-Hadoop

Page 50: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

50© Copyright 2016 EMC Corporation. All rights reserved.

СравнениеHive SparkSQL Impala HAWQ

ОптимизаторANSI SQLВстроенные языкиНагрузка на дискиПараллелизмДистрибутивыСтабильность

Сообщество

Page 51: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

51© Copyright 2016 EMC Corporation. All rights reserved.

Планы развития

Page 52: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003

52© Copyright 2016 EMC Corporation. All rights reserved.

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

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

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

• Полноценная поддержка GPText, MADLib

• Реализация для Cloudera, MapR, IBM

• Развитие комьюнити

Планы развития

Page 53: PGDay Apache HAWQ Apache HAWQ.pdf · Применение Apache HAWQ • Универсальный SQL - интерфейс к данным Hadoop для BI с ANSI SQL-93,-99,-2003