SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Использование Hadoop и
       HBase в поиске
www.mail.ru
Hadoop: что это?
 Хранение и обработка больших объемов
   данных (петабайты)
 1 PiB = 250 Bytes ~ 1015 Bytes

Пользователи: Twitter, Yahoo, Facebook,
LinkedIn

Применение: логи, аналитика, data mining/
machine learning
Hadoop: point 1 - Sequential IO




Пример: 1010 записей по 100 байт (1 ТБ), изменяем 1% записей (одна машина, один диск).
Случайный доступ: 1 месяц, линейное чтение-запись: 5.5 часов. Ускорение в 120 раз.
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 мертвых диска в месяц.
Вывод: репликация - обязательна.
Hadoop: HDFS
Распределенное, отказоустойчивое
хранилище данных.

 ●   Отсутствует операция
     перезаписи данных
 ●   Блоки большого размера (128-
     256 МБ)
MapReduce
Способ организации вычислений.
1. Map(key1, value1) → [{key2, value2}]
2. Shuffle([{key2,value2}] → [{key2,[value2]}]
3. Reduce(key2, [value2]) → [value3]



Бенефиты:
● масштабируемость по данным
● концентрация на логике обработки
Hadoop: MapReduce
Данные логически делятся на записи, которые
могут обрабатываться независимо →
автоматическое распараллеливание задачи.
HBase
Распределенное key-value хранилище поверх HDFS.

Пространство ключей разбивается на регионы, распределяемые между
несколькими серверами и хранящиеся в HDFS. Значения группируются по
семействам колонок (CF).

Поддерживаемые операции:
 ● scan - проход по подмножеству ключей и значений
 ● put - запись нового значения
 ● delete
HBase: архитектура
Hadoop в поиске                       Фетчер: обработка
                                      заданий на
                                      закачку
                                                          Контент
●   хранение и обработка логов (0.5      Задания
    ПБ)                                                                        Логи
●   данные хранилище скачанных
    данных перед импортом в HBase
                                                      Hadoop
●   промежуточные результаты                                        Контент,
●   данные для индексирования                                       флаги, ранки,
                                                                    зоны, и т.п.
●   бэкапы готовых баз
                                                          Индексаторы: готовят
                                                          поисковый индекс
Главное: хранилище HBase
HBase в поиске: webpages
Ключ: ссылка вида com.vk:http/help.php?page=about
Семейства колонок: flags, crawl, link, rf, imgjoin, parsed, snap
Данные: всё о страницах
 ● состояние фетчера - когда качали/будем качать, что получили, и т.д.
 ● флаги - стопицот классификаторов
 ● ссылки - кто ссылается, на кого ссылается
 ● ранжирование - стопицот параметров
 ● картинки
 ● оригинальный контент
 ● обработанный контент
Самая толстая таблица, 230 ТБ, 20 млрд ссылок, 10 млрд страниц с контентом.
Количество значений ~500 млрд.
В таблице 7000 регионов, средний размер региона 31 Гб.
HBase в поиске: queries & websites
Queries: информация о запросах пользователей, используется в опечаточнике и
ранжировании. Используются фичи HBase: версионность и TTL.
Размер 5.3 ТБ, 7 млрд строк.

Websites: данные о сайтах. Хранится состояние фетчера и ранжирования.
Размер 85 Гб, 200 млн строк.
Основные процессы
Fetcher - закачка интернетов:
● Подготовка заданий
● Закачка (отдельные сервера)
● Заливка данных в HBase
● Чистка базы от старых
  записей
● Заливка URL'ов
● Дамп контента в индексаторы
● Прочее: sitemaps, robots, etc.
ТТХ
160 машин, 8 ТБ памяти, 2.5 ПБ диски. За последние полгода выросли в 8 раз.
Типовая конфигурация: 16 ядер, 50 ГБ, 8-14 дисков по 2 ТБ. Сеть - 2*GiGE.
Грабли: compactions
Compact - процесс слияния нескольких файлов с данными в один. Minor - сливаются несколько
небольших файлов. Major - все файлы семейства колонок объединяются в один.
Ошибка HBase - все minor compact превращались в major.

В результате, каждая заливка
выливалась в перелопачивание
сотен терабайт данных.

Решение: https://github.
com/Shmuma/hbase/commits/com
pact-promotion

После исправления,
интенсивность ввода-вывода
уменьшилась в 8 раз.
Грабли: деление регионов
Для эффектвного выполнения сканов, обработка всех регионов должна занимать примерно одно
время. Однако, в случае сложной схемы данных, этот критерий разный для разных задач.
Возможные критерии деления:
 1. размер региона (реализована в HBase)
 2. количество записей в регионе/колонке
 3. отклонение размера колонки региона от среднего
 4. время обработки региона неким набором задач
Текущее решение - №3. Проблемы:
 ● временные всплески в размере регионов, вызывающие их необратимое деление
 ● неточность деления (много пустых ссылок занимают такой же объем что и мало больших
     документов)
Решение: переход на хэшированые ключи. Недостаток: сложно удалять опрометчиво залитые данные.
Грабли: быстрые сканы
Везде в литературе по HBase рекомендуют заводить не более 1-2 CF. На самом
деле все не так. В случае разнородных данных и разнообразия методов их
обработки, много CF - способ повышения производительности.
Проблема: при скане, по признакам из маленькой колонки (флаги) отбираются
редкие данные из большой колонки (snap). При этом hbase читает все данные
из обеих CF.
Решение: https://issues.apache.org/jira/browse/HBASE-5416
Ускорение сканов ~20 раз.
Тайные знания
●   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.
Итоги и перспективы
В целом, итоги использования Hadoop и HBase
положительные.

Основной позитивный момент - предоставление команде
разработчиков поиска эффективного инструмента для
работы с полной копией рунета.
СПАСИБО!
        Максим Лапань
Ведущий разработчик, Поиск@mail.ru
        lapan@corp.mail.ru

Más contenido relacionado

La actualidad más candente

Web весна 2012 лекция 6
Web весна 2012 лекция 6Web весна 2012 лекция 6
Web весна 2012 лекция 6
Technopark
 
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
drupalconf
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Fuenteovejuna
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
it-people
 
Кеширование на высоконагруженном Drupal сайте. Архаров Роман
Кеширование на высоконагруженном Drupal сайте. Архаров РоманКеширование на высоконагруженном Drupal сайте. Архаров Роман
Кеширование на высоконагруженном Drupal сайте. Архаров Роман
PVasili
 

La actualidad más candente (20)

Проект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализацииПроект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализации
 
Как устроены поисковые системы
Как устроены поисковые системыКак устроены поисковые системы
Как устроены поисковые системы
 
Создание электронной библиотеки научных трудов на платформе Dspace
Создание электронной библиотеки научных трудов на платформе DspaceСоздание электронной библиотеки научных трудов на платформе Dspace
Создание электронной библиотеки научных трудов на платформе Dspace
 
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Российская СУБД Postgres Pro
Российская СУБД Postgres ProРоссийская СУБД Postgres Pro
Российская СУБД Postgres Pro
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
 
Web весна 2012 лекция 6
Web весна 2012 лекция 6Web весна 2012 лекция 6
Web весна 2012 лекция 6
 
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
 
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoverypgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recovery
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
 
2011 09-arm-bibliografa
2011 09-arm-bibliografa2011 09-arm-bibliografa
2011 09-arm-bibliografa
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
 
Кеширование на высоконагруженном Drupal сайте. Архаров Роман
Кеширование на высоконагруженном Drupal сайте. Архаров РоманКеширование на высоконагруженном Drupal сайте. Архаров Роман
Кеширование на высоконагруженном Drupal сайте. Архаров Роман
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
Thumbtack Expertise Days # 5 - Dataset
Thumbtack Expertise Days # 5 - DatasetThumbtack Expertise Days # 5 - Dataset
Thumbtack Expertise Days # 5 - Dataset
 
How to-build-google
How to-build-googleHow to-build-google
How to-build-google
 

Destacado

дмитрий юдин3
дмитрий юдин3дмитрий юдин3
дмитрий юдин3
kuchinskaya
 
денис аникин
денис аникинденис аникин
денис аникин
kuchinskaya
 
Rabovoluk presentation yaroslav-2
Rabovoluk presentation yaroslav-2Rabovoluk presentation yaroslav-2
Rabovoluk presentation yaroslav-2
kuchinskaya
 
игорь ермаков
игорь ермаковигорь ермаков
игорь ермаков
kuchinskaya
 
алексей воропаев
алексей воропаевалексей воропаев
алексей воропаев
kuchinskaya
 
дыдыкин егор
дыдыкин егордыдыкин егор
дыдыкин егор
kuchinskaya
 
ярослав рабоволюк
ярослав рабоволюкярослав рабоволюк
ярослав рабоволюк
kuchinskaya
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедев
kuchinskaya
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридонов
kuchinskaya
 
борис вольфсон
борис вольфсонборис вольфсон
борис вольфсон
kuchinskaya
 
Kalugin balashov
Kalugin balashovKalugin balashov
Kalugin balashov
kuchinskaya
 
Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)
kuchinskaya
 
Smirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforumSmirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforum
kuchinskaya
 

Destacado (20)

дмитрий юдин3
дмитрий юдин3дмитрий юдин3
дмитрий юдин3
 
денис аникин
денис аникинденис аникин
денис аникин
 
Rabovoluk presentation yaroslav-2
Rabovoluk presentation yaroslav-2Rabovoluk presentation yaroslav-2
Rabovoluk presentation yaroslav-2
 
игорь ермаков
игорь ермаковигорь ермаков
игорь ермаков
 
алексей воропаев
алексей воропаевалексей воропаев
алексей воропаев
 
дыдыкин егор
дыдыкин егордыдыкин егор
дыдыкин егор
 
Treukhov mclags
Treukhov mclagsTreukhov mclags
Treukhov mclags
 
Sivko
SivkoSivko
Sivko
 
ярослав рабоволюк
ярослав рабоволюкярослав рабоволюк
ярослав рабоволюк
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедев
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридонов
 
борис вольфсон
борис вольфсонборис вольфсон
борис вольфсон
 
Zacepin
ZacepinZacepin
Zacepin
 
Kalugin balashov
Kalugin balashovKalugin balashov
Kalugin balashov
 
Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)
 
Perepelitsa
PerepelitsaPerepelitsa
Perepelitsa
 
Smirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforumSmirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforum
 
Platov
PlatovPlatov
Platov
 
A.pleshkov
A.pleshkovA.pleshkov
A.pleshkov
 
Zamyakin
ZamyakinZamyakin
Zamyakin
 

Similar a Lapan 20.04 hadoop h-base

С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Badoo Development
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
it-people
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
Vladimir Klimontovich
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
it-people
 

Similar a Lapan 20.04 hadoop h-base (20)

С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High Availability
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
HBase inside
HBase insideHBase inside
HBase inside
 
Cостав дистрибутва Hortonworks data platform 2.3
Cостав дистрибутва Hortonworks data platform 2.3Cостав дистрибутва Hortonworks data platform 2.3
Cостав дистрибутва Hortonworks data platform 2.3
 
Apache Hadoop
Apache HadoopApache Hadoop
Apache Hadoop
 
Tarantool_qs
 Tarantool_qs Tarantool_qs
Tarantool_qs
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
Open source субд глазами обычного программиста
Open source субд глазами обычного программистаOpen source субд глазами обычного программиста
Open source субд глазами обычного программиста
 
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014
 

Más de kuchinskaya

Más de kuchinskaya (17)

Kharkov
KharkovKharkov
Kharkov
 
Balashov
BalashovBalashov
Balashov
 
Panfilov
PanfilovPanfilov
Panfilov
 
Rabovoluk
RabovolukRabovoluk
Rabovoluk
 
Zagursky
ZagurskyZagursky
Zagursky
 
Haritonov
HaritonovHaritonov
Haritonov
 
Chudov
ChudovChudov
Chudov
 
Bubnov
BubnovBubnov
Bubnov
 
Zenovich
ZenovichZenovich
Zenovich
 
Romanenko
RomanenkoRomanenko
Romanenko
 
Osipov
OsipovOsipov
Osipov
 
Kubasov
KubasovKubasov
Kubasov
 
владимир габриелян
владимир габриелянвладимир габриелян
владимир габриелян
 
чашкин иван
чашкин иванчашкин иван
чашкин иван
 
сумин андрей
сумин андрейсумин андрей
сумин андрей
 
митасов роман
митасов романмитасов роман
митасов роман
 
кренин владимир
кренин владимиркренин владимир
кренин владимир
 

Lapan 20.04 hadoop h-base

  • 1.
  • 2. Использование Hadoop и HBase в поиске www.mail.ru
  • 3. Hadoop: что это? Хранение и обработка больших объемов данных (петабайты) 1 PiB = 250 Bytes ~ 1015 Bytes Пользователи: Twitter, Yahoo, Facebook, LinkedIn Применение: логи, аналитика, data mining/ machine learning
  • 4. Hadoop: point 1 - Sequential IO Пример: 1010 записей по 100 байт (1 ТБ), изменяем 1% записей (одна машина, один диск). Случайный доступ: 1 месяц, линейное чтение-запись: 5.5 часов. Ускорение в 120 раз.
  • 5. 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 мертвых диска в месяц. Вывод: репликация - обязательна.
  • 6. Hadoop: HDFS Распределенное, отказоустойчивое хранилище данных. ● Отсутствует операция перезаписи данных ● Блоки большого размера (128- 256 МБ)
  • 7. MapReduce Способ организации вычислений. 1. Map(key1, value1) → [{key2, value2}] 2. Shuffle([{key2,value2}] → [{key2,[value2]}] 3. Reduce(key2, [value2]) → [value3] Бенефиты: ● масштабируемость по данным ● концентрация на логике обработки
  • 8. Hadoop: MapReduce Данные логически делятся на записи, которые могут обрабатываться независимо → автоматическое распараллеливание задачи.
  • 9. HBase Распределенное key-value хранилище поверх HDFS. Пространство ключей разбивается на регионы, распределяемые между несколькими серверами и хранящиеся в HDFS. Значения группируются по семействам колонок (CF). Поддерживаемые операции: ● scan - проход по подмножеству ключей и значений ● put - запись нового значения ● delete
  • 11. Hadoop в поиске Фетчер: обработка заданий на закачку Контент ● хранение и обработка логов (0.5 Задания ПБ) Логи ● данные хранилище скачанных данных перед импортом в HBase Hadoop ● промежуточные результаты Контент, ● данные для индексирования флаги, ранки, зоны, и т.п. ● бэкапы готовых баз Индексаторы: готовят поисковый индекс Главное: хранилище HBase
  • 12. HBase в поиске: webpages Ключ: ссылка вида com.vk:http/help.php?page=about Семейства колонок: flags, crawl, link, rf, imgjoin, parsed, snap Данные: всё о страницах ● состояние фетчера - когда качали/будем качать, что получили, и т.д. ● флаги - стопицот классификаторов ● ссылки - кто ссылается, на кого ссылается ● ранжирование - стопицот параметров ● картинки ● оригинальный контент ● обработанный контент Самая толстая таблица, 230 ТБ, 20 млрд ссылок, 10 млрд страниц с контентом. Количество значений ~500 млрд. В таблице 7000 регионов, средний размер региона 31 Гб.
  • 13. HBase в поиске: queries & websites Queries: информация о запросах пользователей, используется в опечаточнике и ранжировании. Используются фичи HBase: версионность и TTL. Размер 5.3 ТБ, 7 млрд строк. Websites: данные о сайтах. Хранится состояние фетчера и ранжирования. Размер 85 Гб, 200 млн строк.
  • 14. Основные процессы Fetcher - закачка интернетов: ● Подготовка заданий ● Закачка (отдельные сервера) ● Заливка данных в HBase ● Чистка базы от старых записей ● Заливка URL'ов ● Дамп контента в индексаторы ● Прочее: sitemaps, robots, etc.
  • 15. ТТХ 160 машин, 8 ТБ памяти, 2.5 ПБ диски. За последние полгода выросли в 8 раз. Типовая конфигурация: 16 ядер, 50 ГБ, 8-14 дисков по 2 ТБ. Сеть - 2*GiGE.
  • 16. Грабли: compactions Compact - процесс слияния нескольких файлов с данными в один. Minor - сливаются несколько небольших файлов. Major - все файлы семейства колонок объединяются в один. Ошибка HBase - все minor compact превращались в major. В результате, каждая заливка выливалась в перелопачивание сотен терабайт данных. Решение: https://github. com/Shmuma/hbase/commits/com pact-promotion После исправления, интенсивность ввода-вывода уменьшилась в 8 раз.
  • 17. Грабли: деление регионов Для эффектвного выполнения сканов, обработка всех регионов должна занимать примерно одно время. Однако, в случае сложной схемы данных, этот критерий разный для разных задач. Возможные критерии деления: 1. размер региона (реализована в HBase) 2. количество записей в регионе/колонке 3. отклонение размера колонки региона от среднего 4. время обработки региона неким набором задач Текущее решение - №3. Проблемы: ● временные всплески в размере регионов, вызывающие их необратимое деление ● неточность деления (много пустых ссылок занимают такой же объем что и мало больших документов) Решение: переход на хэшированые ключи. Недостаток: сложно удалять опрометчиво залитые данные.
  • 18. Грабли: быстрые сканы Везде в литературе по HBase рекомендуют заводить не более 1-2 CF. На самом деле все не так. В случае разнородных данных и разнообразия методов их обработки, много CF - способ повышения производительности. Проблема: при скане, по признакам из маленькой колонки (флаги) отбираются редкие данные из большой колонки (snap). При этом hbase читает все данные из обеих CF. Решение: https://issues.apache.org/jira/browse/HBASE-5416 Ускорение сканов ~20 раз.
  • 19. Тайные знания ● 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.
  • 20. Итоги и перспективы В целом, итоги использования Hadoop и HBase положительные. Основной позитивный момент - предоставление команде разработчиков поиска эффективного инструмента для работы с полной копией рунета.
  • 21. СПАСИБО! Максим Лапань Ведущий разработчик, Поиск@mail.ru lapan@corp.mail.ru