Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

395 views

Published on

В докладе Николай рассмотрит архитектуру распределённой NoSQL базы данных Apache HBase и интерфейс к ней Apache Phoenix. Кроме того, Николай поделится опытом использования этих инструментов в реальном проекте, расскажет о набитых шишках и даст практические рекомендации.

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

  1. 1. HBase и Phoenix в качестве основы ETL- приложения на Node.js Николай Селивёрстов, Аркадия
  2. 2. О себе 2 Николай Селивёрстов JSC “Arcadia Inc.” nikolay.seliverstov@arcadia.spb.ru Веб/javascript разработчик в Аркадии с 2015г. Опыт в области веб-разработки более 10 лет. В текущий момент сферу профессионального интереса составляет высоконагруженный back-end, BigData.
  3. 3. • Предметная область • Испытание лекарств в ходе клинических исследований • Задача • Хранить собранные данные • Сложности • Большой объем данных • Неоднородность представления одних и тех же параметров • Множество потребителей данных со специфическими требованиями • Большое количество форматов входных файлов Наша задача 3
  4. 4. 4 Data Sources Data Warehouse Data Marts Data Consumers ETL ETL Обзор архитектуры DWH, ETL
  5. 5. 5 Data Sources Data Marts Что сделали мы Node.js • Validate • Parse • Insert Ingest App Mapping App Node.js • Select • Join • Transform Data Warehouse Phoenix HBase
  6. 6. 6 Требования к БД • БД должна держать очень большие объемы данных • Должна уметь джоины • Распределенность • Масштабируемость ?
  7. 7. (C) Консистентность (A) Доступность (P) Разделяемость Все клиенты видят одно, даже при конкурентных апдейтах Все клиенты способны получить доступ к какой-то версии данных Данные могут быть разнесены на отдельные секции (серверы) Из чего выбирали, как и почему 7 CouchDB Postgres HBase + Phoenix Объём данных Петабайты Терабайты Петабайты Джоины Нет Да Да* Консистентность В конечном счете Строгая Строгая Распределенность Да Да* Да Масштабируемость Горизонтальная Вертикальная Горизонтальная SQL Нет Да Да CAP AP CA CP (AP) Теорема CAP
  8. 8. • HDFS • NameNode • DataNode • HBase • HMaster • Region Server • ZooKeeper • Phoenix Стэк с высоты 8 NameNode NameNode NameNode NameNode ZooKeeper NameNode HMaster RegionServer DataNode RegionServer DataNode RegionServer DataNode RegionServer DataNode RegionServer DataNode RegionServer DataNode Phoenix
  9. 9. • Blocks • Единица данных (часть файла) • NameNode • Координатор • Хранит расположение блоков • DataNode • Хранит блоки • Обеспечивает чтение/запись NameNode NameNode 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
  10. 10. Модель данных 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 Таганрог
  11. 11. HBase 11 • ZooKeeper – координатор, состояние кластера • HMaster – назначение регионов, создание/удаление таблиц • RegionServer – работа с регионами данных, чтение/запись RegionServer Region Region RegionServer Region Region NameNode NameNode ZooKeeper NameNode HMaster
  12. 12. HBase Region Server 12 • WAL – лог для восстановления • BlockCache – кэш на чтение • MemStore – кэш на запись • HFiles – основное хранилище DataNode RegionServer Region BlockCache Region HFile HFile WAL WAL HFile HFile MemStore MemStore MemStore MemStore
  13. 13. Phoenix 13 • Предоставляет JDBC API • Внутри себя содержит клиента к HBase • Работает как подключаемая библиотека на RegionServers для выполнения кода близкого к данным • Нативно отображает схему на таблицы и колонки HBase RegionServer Phoenix RegionServer Phoenix RegionServer Phoenix NameNode NameNode ZooKeeper NameNode HMaster Phoenix HBase Client
  14. 14. Phoenix. Выполнение запроса 14 Metrics org day product transactions duration SELECT product, SUM(transactions) FROM Metrics WHERE org = :1 AND day >= :2 AND 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 RegionServer Region Region RegionServer Region Region Scan requests Aggregated partial results Phoenix HBase Client
  15. 15. Наш опыт 15 • Недостатки старой архитектуры • Переписали с нуля на DWH, ETL • Динамические колонки • Динамические колонки и индексы • Write amplification • Ищем…
  16. 16. Ссылки 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
  17. 17. Q & A Николай Селивёрстов JSC “Arcadia Inc.” nikolay.seliverstov@arcadia.spb.ru

×