17
HBase и Phoenix в качестве основы ETL- приложения на Node.js Николай Селивёрстов, Аркадия

AzovDevMeetup 2016 | HBase и Phoenix в качестве основы ETL-приложения на Node.js | Николай Селивёрстов

Embed Size (px)

Citation preview

HBase и Phoenix вкачестве основы ETL-приложения на Node.js

Николай Селивёрстов, Аркадия

О себе

2

Николай СеливёрстовJSC “Arcadia Inc.”

[email protected]

Веб/javascript разработчик в Аркадии с 2015г. Опыт в области веб-разработки более 10 лет. В текущий момент сферу профессионального интереса составляет высоконагруженный back-end, BigData.

• Предметная область• Испытание лекарств в ходе клинических

исследований

• Задача• Хранить собранные данные

• Сложности• Большой объем данных

• Неоднородность представления одних и тех же параметров

• Множество потребителей данных со специфическими требованиями

• Большое количество форматов входных файлов

Наша задача

3

4

Data Sources

Data Warehouse

Data Marts

Data Consumers

ETL ETL

Обзор архитектуры DWH, ETL

5

Data Sources

Data Marts

Что сделали мы

Node.js

• Validate• Parse• Insert

IngestApp

MappingApp

Node.js

• Select• Join• Transform

Data Warehouse

PhoenixHBase

6

Требования к БД

• БД должна держать очень большие объемы данных

• Должна уметь джоины

• Распределенность

• Масштабируемость

?

(C) Консистентность(A) Доступность(P) Разделяемость

Все клиенты видят одно, даже при конкурентных апдейтахВсе клиенты способны получить доступ к какой-то версии данныхДанные могут быть разнесены на отдельные секции (серверы)

Из чего выбирали, как и почему

7

CouchDB Postgres HBase + Phoenix

Объём данных Петабайты Терабайты Петабайты

Джоины Нет Да Да*

Консистентность В конечном счете Строгая Строгая

Распределенность Да Да* Да

Масштабируемость Горизонтальная Вертикальная Горизонтальная

SQL Нет Да Да

CAP AP CA CP (AP)

Теорема CAP

• HDFS• NameNode

• DataNode

• HBase• HMaster

• Region Server

• ZooKeeper

• Phoenix

Стэк с высоты

8

NameNodeNameNode

NameNodeNameNode

ZooKeeperNameNode

HMaster

RegionServer

DataNode

RegionServer

DataNode

RegionServer

DataNode

RegionServer

DataNode

RegionServer

DataNode

RegionServer

DataNode

Phoenix

• Blocks• Единица данных

(часть файла)

• NameNode• Координатор

• Хранит расположение блоков

• DataNode• Хранит блоки

• Обеспечивает чтение/запись

NameNodeNameNode

DataNode

2 5

DataNode

1 3 4

DataNode

2 4

DataNode

1 2 3

DataNode

4 5

DataNode

1 3 5

Hadoop Distributed File System

9

Модель данных HBase

10

Key Address Order

City Street Date Value

AAA Таганрог Улица Ленина 10.12.2016 389

AAB Санкт-Петербург Площадь Ленина 10.12.2016 303

AAC Самарканд Улица Льва Толстого 10.12.2016 669

… … … … …

… … … … …

ZZX Якутск Проспект Ленина 10.12.2016 1297

ZZY Калининград Проспект Ленинский 10.12.2016 205

ZZZ Диксон Улица Воронина 10.12.2016 805

Row Key Column Family Column Timestamp Value

AAA Address City 1481362200 Таганрог

HBase

11

• ZooKeeper – координатор, состояние кластера

• HMaster – назначение регионов, создание/удаление таблиц

• RegionServer – работа с регионами данных, чтение/запись

Reg

ion

Serv

er Region Region

Reg

ion

Serv

er Region Region

NameNodeNameNode

ZooKeeper

NameNodeHMaster

HBase Region Server

12

• WAL – лог для восстановления

• BlockCache – кэш на чтение

• MemStore – кэш на запись

• HFiles – основное хранилище

DataNode

Reg

ion

Serv

er

Region

BlockCache

Region

HFile

HFile

WAL

WALHFile

HFile

MemStore

MemStore

MemStore

MemStore

Phoenix

13

• Предоставляет JDBC API

• Внутри себя содержит клиента к HBase

• Работает как подключаемая библиотека на RegionServers для выполнения кода близкого к данным

• Нативно отображает схему на таблицы и колонки HBase

RegionServer

Phoenix

RegionServer

Phoenix

RegionServer

Phoenix

NameNodeNameNode

ZooKeeperNameNode

HMaster

Phoenix

HBase Client

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

14

Metrics

org day product transactions duration

SELECT product, SUM(transactions) FROM Metrics WHERE org = :1

AND day >= :2AND day <= :3 AND duration > :4

GROUP BY product

1. Определение диапазона ключей (client side)• Начальный: org (:1) + day (:2)• Конечный: org (:1) + day (:3)

2. Параллельное сканирование регионов диапазона (server side)• Отбор duration > :4• Группировка по product

3. Финальная сборка (client side)• Группировка по product

Reg

ion

Serv

er Region Region

Reg

ion

Serv

er Region Region

Scan requests

Aggregated partial results

Phoenix

HBaseClient

Наш опыт

15

• Недостатки старой архитектуры

• Переписали с нуля на DWH, ETL

• Динамические колонки

• Динамические колонки и индексы

• Write amplification

• Ищем…

Ссылки

16

• https://en.wikipedia.org/wiki/Data_warehouse

• https://en.wikipedia.org/wiki/Extract,_transform,_load

• https://www.mapr.com/blog/hbase-and-mapr-db-designed-distribution-scale-and-speed

• https://www.mapr.com/blog/in-depth-look-hbase-architecture

• http://phoenix.apache.org/presentations/OC-HUG-2014-10-4x3.pdf

Q & AНиколай СеливёрстовJSC “Arcadia Inc.”

[email protected]