azovdevmeetup 2016 | hbase и phoenix в качестве основы etl-приложения на...
Post on 11-Feb-2017
261 Views
Preview:
TRANSCRIPT
О себе
2
Николай СеливёрстовJSC “Arcadia Inc.”
nikolay.seliverstov@arcadia.spb.ru
Веб/javascript разработчик в Аркадии с 2015г. Опыт в области веб-разработки более 10 лет. В текущий момент сферу профессионального интереса составляет высоконагруженный back-end, BigData.
• Предметная область• Испытание лекарств в ходе клинических
исследований
• Задача• Хранить собранные данные
• Сложности• Большой объем данных
• Неоднородность представления одних и тех же параметров
• Множество потребителей данных со специфическими требованиями
• Большое количество форматов входных файлов
Наша задача
3
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.”
nikolay.seliverstov@arcadia.spb.ru
top related