20
HBase в веб-проектах Александр Чистяков Главный инженер, Git in Sky [email protected] 2013 dev.it-porolio.net

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

HBase в веб-проектах

Александр ЧистяковГлавный инженер, Git in Sky

[email protected]

2013 dev.it-portfolio.net

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

Докладчик

● Третий раз в этом зале● Надеюсь, не последний● Немного разрабатывал на VB● Немного разрабатывал на PHP

dev.it-portfolio.net 2

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

Слушатели

● Веб-разработчики?● DBA?● Инженеры по эксплуатации?● Архитекторы?

dev.it-portfolio.net 3

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

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

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

машину● Можно взять сервер побольше● Можно взять два сервера

dev.it-portfolio.net 4

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

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

● Amazon Dynamo (~2007)● Google BigTable (~2006)● ^ С них все началось● Riak, Cassandra, Voldemort, ...● MongoDB, MemBase (CouchBase), HBase, ...

dev.it-portfolio.net 5

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

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

● Consistency● Availability● Partition tolerance● ^ Выберите любые два● (Partition tolerance не выбрать нельзя)

dev.it-portfolio.net 6

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

CP или AP?

● CP: strong consistency (гарантии)● AP: “eventually consistent DB will become

eventually inconsistent one day”

dev.it-portfolio.net 7

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

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

● Роутер запросов● “Автоматический” шардинг● Сторадж● ^ MongoDB● MemBase – сторадж был сделан на базе

SQLite

dev.it-portfolio.net 8

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

Анатомия HBase

● Java – язык● JVM - платформа● ZooKeeper – распределенный координатор ● HDFS – распределенная файловая система● master node (SPOF)● regionserver nodes

dev.it-portfolio.net 9

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

Анатомия HBase

● SSTable -> LSM-tree● ^ отсортированная структура данных● На файловой системе - файлы● Ключ - значение ● Можно делать range scan● Можно делать range scan по части ключа

dev.it-portfolio.net 10

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

Consistency

● Настолько консистентна, насколько хорош ваш fsync

● Транзакции только в пределах строки● Полная денормализация (ни foreign keys,

ни даже вторичных индексов)● ^ Можно взять group commit фреймворк,

разработанный третьей стороной

dev.it-portfolio.net 11

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

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

● Facebook● Yahoo● StumbleUpon● Cezurity (http://vk.com/av)

dev.it-portfolio.net 12

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

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

● Мы работаем в web – скриптовые языки● Thrift-сервер (HBase-клиент на Java)● Через Thrift работают Python, Perl, etc...● Мне это не очень нравится, так как может

существенно нарушаться локальность данных

dev.it-portfolio.net 13

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

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

● ~6.5 Tb данных● До 30Krps read/write 50/50 для 3-х region

servers● ^ были приняты специальные меры

dev.it-portfolio.net 14

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

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

● dfs.block.local-path-access.user = user● ^ Разрешить этому пользователю

локальный прямой доступ к HDFS-файлам на той же ноде

● dfs.client.read.shortcircuit = true – разрешить локальному клиенту читать файлы напрямую

dev.it-portfolio.net 15

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

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

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

● Включить сжатие при записи на диск● Закрепить таблицу в памяти● Включить отложенный fsync● Включить block cache для файлов

dev.it-portfolio.net 16

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

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

● Как обычно в Java – garbage collector● Как обычно в MVCC – необходимость

чистить старые данные● Лучше делать pre-split регионов● Лучше чтобы replication factor был

соблюден (копий меньше, чем серверов)

dev.it-portfolio.net 17

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

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

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

● В момент сплита один из region servers упал

● Данные никуда не пропали, просто пришлось немного их переместить

● Strong consistency!

dev.it-portfolio.net 18

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

Выводы

● HBase – не самый плохой выбор● Вы должны знать граничные условия● При определенных граничных условиях

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

dev.it-portfolio.net 19

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

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

● Вопросы?● С вами был Саша Чистяков● Главный инженер, Git in Sky,

http://gitinsky.com● ^ занимаемся тюнингом● Координатор, DevOps-40,

http://www.meetup.com/DevOps-40

dev.it-portfolio.net 20