Использование Hadoop и       HBase в поискеwww.mail.ru
Hadoop: что это? Хранение и обработка больших объемов   данных (петабайты) 1 PiB = 250 Bytes ~ 1015 BytesПользователи: Twi...
Hadoop: point 1 - Sequential IOПример: 1010 записей по 100 байт (1 ТБ), изменяем 1% записей (одна машина, один диск).Случа...
Hadoop: point 2&3 - Data locality & ReplicationТиповой сервер: ● 1-2 GiGE ports = 120-240 MB/s ● 4-10 Disks = 320-800 MB/s...
Hadoop: HDFSРаспределенное, отказоустойчивоехранилище данных. ●   Отсутствует операция     перезаписи данных ●   Блоки бол...
MapReduceСпособ организации вычислений.1. Map(key1, value1) → [{key2, value2}]2. Shuffle([{key2,value2}] → [{key2,[value2]...
Hadoop: MapReduceДанные логически делятся на записи, которыемогут обрабатываться независимо →автоматическое распараллелива...
HBaseРаспределенное key-value хранилище поверх HDFS.Пространство ключей разбивается на регионы, распределяемые междунескол...
HBase: архитектура
Hadoop в поиске                       Фетчер: обработка                                      заданий на                   ...
HBase в поиске: webpagesКлюч: ссылка вида com.vk:http/help.php?page=aboutСемейства колонок: flags, crawl, link, rf, imgjoi...
HBase в поиске: queries & websitesQueries: информация о запросах пользователей, используется в опечаточнике иранжировании....
Основные процессыFetcher - закачка интернетов:● Подготовка заданий● Закачка (отдельные сервера)● Заливка данных в HBase● Ч...
ТТХ160 машин, 8 ТБ памяти, 2.5 ПБ диски. За последние полгода выросли в 8 раз.Типовая конфигурация: 16 ядер, 50 ГБ, 8-14 д...
Грабли: compactionsCompact - процесс слияния нескольких файлов с данными в один. Minor - сливаются нескольконебольших файл...
Грабли: деление регионовДля эффектвного выполнения сканов, обработка всех регионов должна занимать примерно одновремя. Одн...
Грабли: быстрые сканыВезде в литературе по HBase рекомендуют заводить не более 1-2 CF. На самомделе все не так. В случае р...
Тайные знания●   dfs.datanode.socket.write.timeout = 300000 (5 мин). Везде рекомендуют    выставлять в 0. Ноль ведет к зал...
Итоги и перспективыВ целом, итоги использования Hadoop и HBaseположительные.Основной позитивный момент - предоставление ко...
СПАСИБО!        Максим ЛапаньВедущий разработчик, Поиск@mail.ru        lapan@corp.mail.ru
Lapan 20.04 hadoop h-base
Upcoming SlideShare
Loading in...5
×

Lapan 20.04 hadoop h-base

2,716

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,716
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
19
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Lapan 20.04 hadoop h-base

  1. 1. Использование Hadoop и HBase в поискеwww.mail.ru
  2. 2. Hadoop: что это? Хранение и обработка больших объемов данных (петабайты) 1 PiB = 250 Bytes ~ 1015 BytesПользователи: Twitter, Yahoo, Facebook,LinkedInПрименение: логи, аналитика, data mining/machine learning
  3. 3. Hadoop: point 1 - Sequential IOПример: 1010 записей по 100 байт (1 ТБ), изменяем 1% записей (одна машина, один диск).Случайный доступ: 1 месяц, линейное чтение-запись: 5.5 часов. Ускорение в 120 раз.
  4. 4. Hadoop: point 2&3 - Data locality & ReplicationТиповой сервер: ● 1-2 GiGE ports = 120-240 MB/s ● 4-10 Disks = 320-800 MB/sВывод: обрабатывать данные нужно там же где и хранить.Время наработки на отказ диска 500k часов (57 лет).Если в системе 1000 дисков - 2 мертвых диска в месяц.Вывод: репликация - обязательна.
  5. 5. Hadoop: HDFSРаспределенное, отказоустойчивоехранилище данных. ● Отсутствует операция перезаписи данных ● Блоки большого размера (128- 256 МБ)
  6. 6. MapReduceСпособ организации вычислений.1. Map(key1, value1) → [{key2, value2}]2. Shuffle([{key2,value2}] → [{key2,[value2]}]3. Reduce(key2, [value2]) → [value3]Бенефиты:● масштабируемость по данным● концентрация на логике обработки
  7. 7. Hadoop: MapReduceДанные логически делятся на записи, которыемогут обрабатываться независимо →автоматическое распараллеливание задачи.
  8. 8. HBaseРаспределенное key-value хранилище поверх HDFS.Пространство ключей разбивается на регионы, распределяемые междунесколькими серверами и хранящиеся в HDFS. Значения группируются посемействам колонок (CF).Поддерживаемые операции: ● scan - проход по подмножеству ключей и значений ● put - запись нового значения ● delete
  9. 9. HBase: архитектура
  10. 10. Hadoop в поиске Фетчер: обработка заданий на закачку Контент● хранение и обработка логов (0.5 Задания ПБ) Логи● данные хранилище скачанных данных перед импортом в HBase Hadoop● промежуточные результаты Контент,● данные для индексирования флаги, ранки, зоны, и т.п.● бэкапы готовых баз Индексаторы: готовят поисковый индексГлавное: хранилище HBase
  11. 11. HBase в поиске: webpagesКлюч: ссылка вида com.vk:http/help.php?page=aboutСемейства колонок: flags, crawl, link, rf, imgjoin, parsed, snapДанные: всё о страницах ● состояние фетчера - когда качали/будем качать, что получили, и т.д. ● флаги - стопицот классификаторов ● ссылки - кто ссылается, на кого ссылается ● ранжирование - стопицот параметров ● картинки ● оригинальный контент ● обработанный контентСамая толстая таблица, 230 ТБ, 20 млрд ссылок, 10 млрд страниц с контентом.Количество значений ~500 млрд.В таблице 7000 регионов, средний размер региона 31 Гб.
  12. 12. HBase в поиске: queries & websitesQueries: информация о запросах пользователей, используется в опечаточнике иранжировании. Используются фичи HBase: версионность и TTL.Размер 5.3 ТБ, 7 млрд строк.Websites: данные о сайтах. Хранится состояние фетчера и ранжирования.Размер 85 Гб, 200 млн строк.
  13. 13. Основные процессыFetcher - закачка интернетов:● Подготовка заданий● Закачка (отдельные сервера)● Заливка данных в HBase● Чистка базы от старых записей● Заливка URLов● Дамп контента в индексаторы● Прочее: sitemaps, robots, etc.
  14. 14. ТТХ160 машин, 8 ТБ памяти, 2.5 ПБ диски. За последние полгода выросли в 8 раз.Типовая конфигурация: 16 ядер, 50 ГБ, 8-14 дисков по 2 ТБ. Сеть - 2*GiGE.
  15. 15. Грабли: compactionsCompact - процесс слияния нескольких файлов с данными в один. Minor - сливаются нескольконебольших файлов. Major - все файлы семейства колонок объединяются в один.Ошибка HBase - все minor compact превращались в major.В результате, каждая заливкавыливалась в перелопачиваниесотен терабайт данных.Решение: https://github.com/Shmuma/hbase/commits/compact-promotionПосле исправления,интенсивность ввода-выводауменьшилась в 8 раз.
  16. 16. Грабли: деление регионовДля эффектвного выполнения сканов, обработка всех регионов должна занимать примерно одновремя. Однако, в случае сложной схемы данных, этот критерий разный для разных задач.Возможные критерии деления: 1. размер региона (реализована в HBase) 2. количество записей в регионе/колонке 3. отклонение размера колонки региона от среднего 4. время обработки региона неким набором задачТекущее решение - №3. Проблемы: ● временные всплески в размере регионов, вызывающие их необратимое деление ● неточность деления (много пустых ссылок занимают такой же объем что и мало больших документов)Решение: переход на хэшированые ключи. Недостаток: сложно удалять опрометчиво залитые данные.
  17. 17. Грабли: быстрые сканыВезде в литературе по HBase рекомендуют заводить не более 1-2 CF. На самомделе все не так. В случае разнородных данных и разнообразия методов ихобработки, много CF - способ повышения производительности.Проблема: при скане, по признакам из маленькой колонки (флаги) отбираютсяредкие данные из большой колонки (snap). При этом hbase читает все данныеиз обеих CF.Решение: https://issues.apache.org/jira/browse/HBASE-5416Ускорение сканов ~20 раз.
  18. 18. Тайные знания● dfs.datanode.socket.write.timeout = 300000 (5 мин). Везде рекомендуют выставлять в 0. Ноль ведет к залипанию потоков RS.● mapred.reduce.parallel.copies = 2. Везде рекомендуют поставить побольше. Копирование ускоряется, но одновременные копии валят RS.● io.sort.factor = 10. Рекомендации - чем больше, тем лучше. Это бред - большие значения ведут к превращению последовательных операций в случаные и отстрелу RS.● mapred.job.tracker.handler.count = 20. Связано с parallel.copies - ставить сильно много тоже плохо.● hbase.server.versionfile.writeattempts = 10.
  19. 19. Итоги и перспективыВ целом, итоги использования Hadoop и HBaseположительные.Основной позитивный момент - предоставление командеразработчиков поиска эффективного инструмента дляработы с полной копией рунета.
  20. 20. СПАСИБО! Максим ЛапаньВедущий разработчик, Поиск@mail.ru lapan@corp.mail.ru
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×