16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуатация HBase на паре жизненных примеров", Александр Чистяков (ведущий разработчик Git in Sky)
Применение DTrace для оптимизации производительности на примере двух больших ...SQALab
Similaire à 16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуатация HBase на паре жизненных примеров", Александр Чистяков (20)
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
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
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