SlideShare a Scribd company logo
HBase в веб-проектах
Александр Чистяков
Главный инженер, Git in Sky
alex@gitinsky.com

2013

dev.it-portfolio.net
Докладчик
●

Третий раз в этом зале

●

Надеюсь, не последний

●

Немного разрабатывал на VB

●

Немного разрабатывал на PHP

dev.it-portfolio.net

2
Слушатели
●

Веб-разработчики?

●

DBA?

●

Инженеры по эксплуатации?

●

Архитекторы?

dev.it-portfolio.net

3
Суть проблемы
●

●

Иногда данных бывает много
Они перестают помещаться на одну
машину

●

Можно взять сервер побольше

●

Можно взять два сервера

dev.it-portfolio.net

4
Как взять два сервера?
●

Amazon Dynamo (~2007)

●

Google BigTable (~2006)

●

^ С них все началось

●

Riak, Cassandra, Voldemort, ...

●

MongoDB, MemBase (CouchBase), HBase, ...

dev.it-portfolio.net

5
Пресловутая CAP-теорема
●

Consistency

●

Availability

●

Partition tolerance

●

^ Выберите любые два

●

(Partition tolerance не выбрать нельзя)

dev.it-portfolio.net

6
CP или AP?
●

●

CP: strong consistency (гарантии)
AP: “eventually consistent DB will become
eventually inconsistent one day”

dev.it-portfolio.net

7
Анатомия NoSQL движка
●

Роутер запросов

●

“Автоматический” шардинг

●

Сторадж

●

^ MongoDB

●

MemBase – сторадж был сделан на базе
SQLite

dev.it-portfolio.net

8
Анатомия HBase
●

Java – язык

●

JVM - платформа

●

ZooKeeper – распределенный координатор

●

HDFS – распределенная файловая система

●

master node (SPOF)

●

regionserver nodes
dev.it-portfolio.net

9
Анатомия HBase
●

SSTable -> LSM-tree

●

^ отсортированная структура данных

●

На файловой системе - файлы

●

Ключ - значение

●

Можно делать range scan

●

Можно делать range scan по части ключа
dev.it-portfolio.net

10
Consistency
●

●

●

●

Настолько консистентна, насколько хорош
ваш fsync
Транзакции только в пределах строки
Полная денормализация (ни foreign keys,
ни даже вторичных индексов)
^ Можно взять group commit фреймворк,
разработанный третьей стороной
dev.it-portfolio.net

11
Кто использует HBase?
●

Facebook

●

Yahoo

●

StumbleUpon

●

Cezurity (http://vk.com/av)

dev.it-portfolio.net

12
Что является клиентом?
●

Мы работаем в web – скриптовые языки

●

Thrift-сервер (HBase-клиент на Java)

●

Через Thrift работают Python, Perl, etc...

●

Мне это не очень нравится, так как может
существенно нарушаться локальность
данных

dev.it-portfolio.net

13
Какова нагрузка?
●

●

●

~6.5 Tb данных
До 30Krps read/write 50/50 для 3-х region
servers
^ были приняты специальные меры

dev.it-portfolio.net

14
Какие бывают специальные меры?
●

●

●

dfs.block.local-path-access.user = user
^ Разрешить этому пользователю
локальный прямой доступ к HDFS-файлам
на той же ноде
dfs.client.read.shortcircuit = true –
разрешить локальному клиенту читать
файлы напрямую
dev.it-portfolio.net

15
Какие бывают специальные меры?
●

hbase.client.keyvalue.maxsize – увеличить
максимальный размер файла, чтобы
избежать частых сплитов региона

●

Включить сжатие при записи на диск

●

Закрепить таблицу в памяти

●

Включить отложенный fsync

●

Включить block cache для файлов
dev.it-portfolio.net

16
С чем столкнулись при эксплуатации
●

●

●

●

Как обычно в Java – garbage collector
Как обычно в MVCC – необходимость
чистить старые данные
Лучше делать pre-split регионов
Лучше чтобы replication factor был
соблюден (копий меньше, чем серверов)

dev.it-portfolio.net

17
С чем столкнулись при эксплуатации
●

●

●

●

Однажды пришлось делать crash recovery
вручную
В момент сплита один из region servers
упал
Данные никуда не пропали, просто
пришлось немного их переместить
Strong consistency!
dev.it-portfolio.net

18
Выводы
●

HBase – не самый плохой выбор

●

Вы должны знать граничные условия

●

●

При определенных граничных условиях
можно масштабироваться безгранично
^ Если победить закон Амдала

dev.it-portfolio.net

19
Спасибо за внимание!
●

Вопросы?

●

С вами был Саша Чистяков

●

●

●

Главный инженер, Git in Sky,
http://gitinsky.com
^ занимаемся тюнингом
Координатор, DevOps-40,
http://www.meetup.com/DevOps-40
dev.it-portfolio.net

20

More Related Content

PDF
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
PDF
Web performance 101 [GDG nsk webdev meetup #3]
PDF
Benchmarking PostgreSQL in Linux and FreeBSD
ODP
My talk on Docker, Youcon 2015
PDF
Sama5d3: how to run linux on it
PDF
Как ВКонтакте использует Go
PDF
My talk on Salt and Ansible from DevConf 2014
PDF
My talk on Hadoop stack operations engineering at OSPCon
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Web performance 101 [GDG nsk webdev meetup #3]
Benchmarking PostgreSQL in Linux and FreeBSD
My talk on Docker, Youcon 2015
Sama5d3: how to run linux on it
Как ВКонтакте использует Go
My talk on Salt and Ansible from DevConf 2014
My talk on Hadoop stack operations engineering at OSPCon

What's hot (19)

PPTX
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
PDF
My talk at Highload++ 2015
PDF
Ansible in the enterprise
PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
PDF
Kirill A Korinskiy Rit2010 No Sql Storage
PDF
Разработка API для большого, нагруженного сервиса
PDF
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
KEY
Как сделать сайт быстрее?
PDF
2014.10.15 Сергей Бурладян, Avito.ru
PDF
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
PPT
Drupal and NodeJS.
PDF
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
PDF
специализированные http-демона (Сергей Боченков, Александр Панков)
PDF
Оптимизация JavaScript в Drupal
PDF
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
PDF
Salt and Ansible - Python-based CM systems
PPT
Битва за миллисекунды: практика ускорения веб сайтов
PDF
Rust - GDG DevFest Siberia 2016
PDF
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
My talk at Highload++ 2015
Ansible in the enterprise
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Kirill A Korinskiy Rit2010 No Sql Storage
Разработка API для большого, нагруженного сервиса
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как сделать сайт быстрее?
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
Drupal and NodeJS.
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
специализированные http-демона (Сергей Боченков, Александр Панков)
Оптимизация JavaScript в Drupal
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
Salt and Ansible - Python-based CM systems
Битва за миллисекунды: практика ускорения веб сайтов
Rust - GDG DevFest Siberia 2016
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Ad

Viewers also liked (12)

PPT
Алексей Чумаков. Apache Cassandra на реальном проекте
PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
PDF
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
PDF
Couchbase, что за зверь и на что способен.
PPTX
NoSQL - World IT Planet, Saint Petersburg 2015
PDF
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
PPTX
Преимущества NoSQL баз данных на примере MongoDB
PPTX
MongoDB в продакшен - миф или реальность?
PDF
NoSQL thumbtack experience, Анатолий Никулин
PDF
Вадим Шашенко, 2ГИС
PPTX
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Алексей Чумаков. Apache Cassandra на реальном проекте
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
Couchbase, что за зверь и на что способен.
NoSQL - World IT Planet, Saint Petersburg 2015
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Преимущества NoSQL баз данных на примере MongoDB
MongoDB в продакшен - миф или реальность?
NoSQL thumbtack experience, Анатолий Никулин
Вадим Шашенко, 2ГИС
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Ad

Similar to 16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуатация HBase на паре жизненных примеров", Александр Чистяков (20)

PDF
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
PDF
ZFS - файловая система будущего
PDF
От Make к Ansible
PDF
Rpm5
PPTX
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
PDF
AVITO. Решардинг Redis без даунтайма. DevConf 2012
PDF
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
PDF
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
PPTX
Daemons In Web on #devrus
PDF
High Load 2009 Imdg Presentation
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
PDF
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
ODP
My talk on LeoFS, HappyDev 2014
PDF
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
PDF
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
PPTX
Применяем Ansible
PDF
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
PDF
Применение DTrace для оптимизации производительности на примере двух больших ...
PDF
Презентация про DTrace на ADDconf в Минске
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
ZFS - файловая система будущего
От Make к Ansible
Rpm5
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Daemons In Web on #devrus
High Load 2009 Imdg Presentation
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
My talk on LeoFS, HappyDev 2014
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Применяем Ansible
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Применение DTrace для оптимизации производительности на примере двух больших ...
Презентация про DTrace на ADDconf в Минске

More from IT-Portfolio (10)

PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
PPT
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
PPTX
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
PDF
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в...
PDF
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
PPT
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
PDF
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
PDF
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
PPTX
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
PPT
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуатация HBase на паре жизненных примеров", Александр Чистяков

  • 1. HBase в веб-проектах Александр Чистяков Главный инженер, Git in Sky alex@gitinsky.com 2013 dev.it-portfolio.net
  • 2. Докладчик ● Третий раз в этом зале ● Надеюсь, не последний ● Немного разрабатывал на VB ● Немного разрабатывал на PHP dev.it-portfolio.net 2
  • 4. Суть проблемы ● ● Иногда данных бывает много Они перестают помещаться на одну машину ● Можно взять сервер побольше ● Можно взять два сервера dev.it-portfolio.net 4
  • 5. Как взять два сервера? ● Amazon Dynamo (~2007) ● Google BigTable (~2006) ● ^ С них все началось ● Riak, Cassandra, Voldemort, ... ● MongoDB, MemBase (CouchBase), HBase, ... dev.it-portfolio.net 5
  • 6. Пресловутая CAP-теорема ● Consistency ● Availability ● Partition tolerance ● ^ Выберите любые два ● (Partition tolerance не выбрать нельзя) dev.it-portfolio.net 6
  • 7. CP или AP? ● ● CP: strong consistency (гарантии) AP: “eventually consistent DB will become eventually inconsistent one day” dev.it-portfolio.net 7
  • 8. Анатомия NoSQL движка ● Роутер запросов ● “Автоматический” шардинг ● Сторадж ● ^ MongoDB ● MemBase – сторадж был сделан на базе SQLite dev.it-portfolio.net 8
  • 9. Анатомия HBase ● Java – язык ● JVM - платформа ● ZooKeeper – распределенный координатор ● HDFS – распределенная файловая система ● master node (SPOF) ● regionserver nodes dev.it-portfolio.net 9
  • 10. Анатомия HBase ● SSTable -> LSM-tree ● ^ отсортированная структура данных ● На файловой системе - файлы ● Ключ - значение ● Можно делать range scan ● Можно делать range scan по части ключа dev.it-portfolio.net 10
  • 11. Consistency ● ● ● ● Настолько консистентна, насколько хорош ваш fsync Транзакции только в пределах строки Полная денормализация (ни foreign keys, ни даже вторичных индексов) ^ Можно взять group commit фреймворк, разработанный третьей стороной dev.it-portfolio.net 11
  • 12. Кто использует HBase? ● Facebook ● Yahoo ● StumbleUpon ● Cezurity (http://vk.com/av) dev.it-portfolio.net 12
  • 13. Что является клиентом? ● Мы работаем в web – скриптовые языки ● Thrift-сервер (HBase-клиент на Java) ● Через Thrift работают Python, Perl, etc... ● Мне это не очень нравится, так как может существенно нарушаться локальность данных dev.it-portfolio.net 13
  • 14. Какова нагрузка? ● ● ● ~6.5 Tb данных До 30Krps read/write 50/50 для 3-х region servers ^ были приняты специальные меры dev.it-portfolio.net 14
  • 15. Какие бывают специальные меры? ● ● ● dfs.block.local-path-access.user = user ^ Разрешить этому пользователю локальный прямой доступ к HDFS-файлам на той же ноде dfs.client.read.shortcircuit = true – разрешить локальному клиенту читать файлы напрямую dev.it-portfolio.net 15
  • 16. Какие бывают специальные меры? ● hbase.client.keyvalue.maxsize – увеличить максимальный размер файла, чтобы избежать частых сплитов региона ● Включить сжатие при записи на диск ● Закрепить таблицу в памяти ● Включить отложенный fsync ● Включить block cache для файлов dev.it-portfolio.net 16
  • 17. С чем столкнулись при эксплуатации ● ● ● ● Как обычно в Java – garbage collector Как обычно в MVCC – необходимость чистить старые данные Лучше делать pre-split регионов Лучше чтобы replication factor был соблюден (копий меньше, чем серверов) dev.it-portfolio.net 17
  • 18. С чем столкнулись при эксплуатации ● ● ● ● Однажды пришлось делать crash recovery вручную В момент сплита один из region servers упал Данные никуда не пропали, просто пришлось немного их переместить Strong consistency! dev.it-portfolio.net 18
  • 19. Выводы ● HBase – не самый плохой выбор ● Вы должны знать граничные условия ● ● При определенных граничных условиях можно масштабироваться безгранично ^ Если победить закон Амдала dev.it-portfolio.net 19
  • 20. Спасибо за внимание! ● Вопросы? ● С вами был Саша Чистяков ● ● ● Главный инженер, Git in Sky, http://gitinsky.com ^ занимаемся тюнингом Координатор, DevOps-40, http://www.meetup.com/DevOps-40 dev.it-portfolio.net 20