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.
HBase в веб-проектах
Александр Чистяков
Главный инженер, Git in Sky
alex@gitinsky.com

2013

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

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

●

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

●

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

●

Немного разрабатывал на P...
Слушатели
●

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

●

DBA?

●

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

●

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

dev.it-portfolio.net

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

●

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

●

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

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

Amazon Dynamo (~2007)

●

Google BigTable (~2006)

●

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

●

Riak, Cassandra, ...
Пресловутая CAP-теорема
●

Consistency

●

Availability

●

Partition tolerance

●

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

●

(Partition to...
CP или AP?
●

●

CP: strong consistency (гарантии)
AP: “eventually consistent DB will become
eventually inconsistent one d...
Анатомия NoSQL движка
●

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

●

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

●

Сторадж

●

^ MongoDB

●

MemBase – сторадж был ...
Анатомия HBase
●

Java – язык

●

JVM - платформа

●

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

●

HDFS – распределенная фай...
Анатомия HBase
●

SSTable -> LSM-tree

●

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

●

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

●

Ключ - зн...
Consistency
●

●

●

●

Настолько консистентна, насколько хорош
ваш fsync
Транзакции только в пределах строки
Полная денор...
Кто использует HBase?
●

Facebook

●

Yahoo

●

StumbleUpon

●

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

dev.it-portfolio.net

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

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

●

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

●

Через Thrift р...
Какова нагрузка?
●

●

●

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

●

●

dfs.block.local-path-access.user = user
^ Разрешить этому пользователю
локальный п...
Какие бывают специальные меры?
●

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

●

●

●

Как обычно в Java – garbage collector
Как обычно в MVCC – необходимость
чис...
С чем столкнулись при эксплуатации
●

●

●

●

Однажды пришлось делать crash recovery
вручную
В момент сплита один из regi...
Выводы
●

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

●

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

●

●

При определенных граничных условиях
м...
Спасибо за внимание!
●

Вопросы?

●

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

●

●

●

Главный инженер, Git in Sky,
http://gitinsky.com
^...
Upcoming SlideShare
Loading in …5
×

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

1,396 views

Published on

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

  • Be the first to comment

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

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

×