SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
HBase и Phoenix в
качестве основы ETL-
приложения на Node.js
Николай Селивёрстов, Аркадия
О себе
2
Николай Селивёрстов
JSC “Arcadia Inc.”
nikolay.seliverstov@arcadia.spb.ru
Веб/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
Ingest
App
Mapping
App
Node.js
• Select
• Join
• Transform
Data
Warehouse
Phoenix
HBase
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
NameNode
NameNode
NameNode
NameNode
ZooKeeper
NameNode
HMaster
RegionServer
DataNode
RegionServer
DataNode
RegionServer
DataNode
RegionServer
DataNode
RegionServer
DataNode
RegionServer
DataNode
Phoenix
• 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
Модель данных 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 – работа с
регионами данных,
чтение/запись
RegionServer
Region Region
RegionServer
Region Region
NameNode
NameNode
ZooKeeper
NameNode
HMaster
HBase Region Server
12
• WAL – лог для восстановления
• BlockCache – кэш на чтение
• MemStore – кэш на запись
• HFiles – основное хранилище
DataNode
RegionServer
Region
BlockCache
Region
HFile
HFile
WAL
WAL
HFile
HFile
MemStore
MemStore
MemStore
MemStore
Phoenix
13
• Предоставляет JDBC API
• Внутри себя содержит клиента
к HBase
• Работает как подключаемая
библиотека на RegionServers
для выполнения кода
близкого к данным
• Нативно отображает схему на
таблицы и колонки HBase
RegionServer
Phoenix
RegionServer
Phoenix
RegionServer
Phoenix
NameNode
NameNode
ZooKeeper
NameNode
HMaster
Phoenix
HBase Client
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
• Недостатки старой архитектуры
• Переписали с нуля на 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

Weitere ähnliche Inhalte

Was ist angesagt?

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...IT-Portfolio
 
Db in-memory-overview 2015-10_14
Db in-memory-overview 2015-10_14Db in-memory-overview 2015-10_14
Db in-memory-overview 2015-10_14remizovd
 
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"Yandex
 
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)drupalconf
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминHOWWEDOIT
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейaragozin
 
Drupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharovDrupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharovrrromka
 
Проект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализацииПроект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализацииbntulibrary
 
Short Infrastructure Overview ru hpe Vertica
Short Infrastructure Overview ru hpe VerticaShort Infrastructure Overview ru hpe Vertica
Short Infrastructure Overview ru hpe VerticaAndrey Karpov
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...Ontico
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?aragozin
 
Доклад Ильи Сотникова на SPCUA 2012
Доклад Ильи Сотникова на SPCUA 2012Доклад Ильи Сотникова на SPCUA 2012
Доклад Ильи Сотникова на SPCUA 2012Lizard Soft
 

Was ist angesagt? (17)

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
Db in-memory-overview 2015-10_14
Db in-memory-overview 2015-10_14Db in-memory-overview 2015-10_14
Db in-memory-overview 2015-10_14
 
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
 
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
 
Веб-кластер
Веб-кластерВеб-кластер
Веб-кластер
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшей
 
Drupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharovDrupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharov
 
Проект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализацииПроект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализации
 
Short Infrastructure Overview ru hpe Vertica
Short Infrastructure Overview ru hpe VerticaShort Infrastructure Overview ru hpe Vertica
Short Infrastructure Overview ru hpe Vertica
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
 
SQL Server 2012 Deep Dive (rus)
SQL Server 2012 Deep Dive (rus)SQL Server 2012 Deep Dive (rus)
SQL Server 2012 Deep Dive (rus)
 
Доклад Ильи Сотникова на SPCUA 2012
Доклад Ильи Сотникова на SPCUA 2012Доклад Ильи Сотникова на SPCUA 2012
Доклад Ильи Сотникова на SPCUA 2012
 
No sql.mongodb scaling
No sql.mongodb scalingNo sql.mongodb scaling
No sql.mongodb scaling
 
1c bitrix-cluster-et
1c bitrix-cluster-et1c bitrix-cluster-et
1c bitrix-cluster-et
 

Andere mochten auch

AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...JSC “Arcadia Inc”
 
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...JSC “Arcadia Inc”
 
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём КравченкоAzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём КравченкоJSC “Arcadia Inc”
 
AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисле...
AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисле...AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисле...
AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисле...JSC “Arcadia Inc”
 
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр ШевнинAzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр ШевнинJSC “Arcadia Inc”
 
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...JSC “Arcadia Inc”
 
Business Ethics and HRM: Jet Airways Case Study
Business Ethics and HRM: Jet Airways Case StudyBusiness Ethics and HRM: Jet Airways Case Study
Business Ethics and HRM: Jet Airways Case StudyHimadri Singha
 
Getting Started with Angular 2
Getting Started with Angular 2Getting Started with Angular 2
Getting Started with Angular 2FITC
 

Andere mochten auch (8)

AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
AzovDevMeetup 2016 | Zero downtime — как релизить продукт миллионам пользоват...
 
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
 
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём КравченкоAzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
 
AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисле...
AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисле...AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисле...
AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисле...
 
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр ШевнинAzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
 
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
 
Business Ethics and HRM: Jet Airways Case Study
Business Ethics and HRM: Jet Airways Case StudyBusiness Ethics and HRM: Jet Airways Case Study
Business Ethics and HRM: Jet Airways Case Study
 
Getting Started with Angular 2
Getting Started with Angular 2Getting Started with Angular 2
Getting Started with Angular 2
 

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

СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Olga Lavrentieva
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data applianceCleverDATA
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковMaxim Zinal
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Igor Brovchenko
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Ontico
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернетаAlexander Sibiryakov
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...it-people
 
Повышение эффективности Java приложений (новые возможности Web Logic 12c, кон...
Повышение эффективности Java приложений (новые возможности Web Logic 12c, кон...Повышение эффективности Java приложений (новые возможности Web Logic 12c, кон...
Повышение эффективности Java приложений (новые возможности Web Logic 12c, кон...Andrey Akulov
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianMikhail Davydov
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системAndrey Akulov
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchИлья Середа
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС 2ГИС Технологии
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusOntico
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...Vyacheslav Nikulin
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров 1С-Битрикс
 

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

СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data appliance
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
 
Повышение эффективности Java приложений (новые возможности Web Logic 12c, кон...
Повышение эффективности Java приложений (новые возможности Web Logic 12c, кон...Повышение эффективности Java приложений (новые возможности Web Logic 12c, кон...
Повышение эффективности Java приложений (новые возможности Web Logic 12c, кон...
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in Russian
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных систем
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров
 

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

  • 1. HBase и Phoenix в качестве основы ETL- приложения на Node.js Николай Селивёрстов, Аркадия
  • 2. О себе 2 Николай Селивёрстов JSC “Arcadia Inc.” nikolay.seliverstov@arcadia.spb.ru Веб/javascript разработчик в Аркадии с 2015г. Опыт в области веб-разработки более 10 лет. В текущий момент сферу профессионального интереса составляет высоконагруженный back-end, BigData.
  • 3. • Предметная область • Испытание лекарств в ходе клинических исследований • Задача • Хранить собранные данные • Сложности • Большой объем данных • Неоднородность представления одних и тех же параметров • Множество потребителей данных со специфическими требованиями • Большое количество форматов входных файлов Наша задача 3
  • 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 Требования к БД • БД должна держать очень большие объемы данных • Должна уметь джоины • Распределенность • Масштабируемость ?
  • 7. (C) Консистентность (A) Доступность (P) Разделяемость Все клиенты видят одно, даже при конкурентных апдейтах Все клиенты способны получить доступ к какой-то версии данных Данные могут быть разнесены на отдельные секции (серверы) Из чего выбирали, как и почему 7 CouchDB Postgres HBase + Phoenix Объём данных Петабайты Терабайты Петабайты Джоины Нет Да Да* Консистентность В конечном счете Строгая Строгая Распределенность Да Да* Да Масштабируемость Горизонтальная Вертикальная Горизонтальная SQL Нет Да Да CAP AP CA CP (AP) Теорема CAP
  • 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. • 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. Модель данных 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. HBase 11 • ZooKeeper – координатор, состояние кластера • HMaster – назначение регионов, создание/удаление таблиц • RegionServer – работа с регионами данных, чтение/запись RegionServer Region Region RegionServer Region Region NameNode NameNode ZooKeeper NameNode HMaster
  • 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. Phoenix 13 • Предоставляет JDBC API • Внутри себя содержит клиента к HBase • Работает как подключаемая библиотека на RegionServers для выполнения кода близкого к данным • Нативно отображает схему на таблицы и колонки HBase RegionServer Phoenix RegionServer Phoenix RegionServer Phoenix NameNode NameNode ZooKeeper NameNode HMaster Phoenix HBase Client
  • 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 • Недостатки старой архитектуры • Переписали с нуля на DWH, ETL • Динамические колонки • Динамические колонки и индексы • Write amplification • Ищем…
  • 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. Q & A Николай Селивёрстов JSC “Arcadia Inc.” nikolay.seliverstov@arcadia.spb.ru