SlideShare una empresa de Scribd logo
1 de 73
Descargar para leer sin conexión
О чем доклад?
✦Основные узлы и компоненты Hadoop
✦Зачем обеспечивать высокую доступность
кластера
✦Как постичь дзен Hadoop
High Availability (HA)
✦Наш опыт внедрения HA
Что будет в докладе
5полезных
ссылок
2
72слайда
про
Hadoop
2картины
Ложкина
5блок-схем
4
1
КО
5классных
советов
истории
факапов
sequence
diagrams
Компоненты кластера
Hadoop "на пальцах"
Hadoop Distributed FileSystem
Файловая система
● Иерархическая
● Распределенная
● С репликацией
Yet Another Resource Negotiator
Вычислительные ресурсы кластера
● Набор нод
● Ядра (vCores)
● RAM
Программный комплекс
HDFS
HDFS
HDFS: узлы и роли
NameNode
✦ Центральный узел кластера
✦ Хранит индекс FS
✦ Предоставляет API для манипуляций с ним
✦ Знает, где лежат данные
HDFS
HDFS: узлы и роли
DataNode
✦ Принимает read/write запросы к содержимому
файлов HDFS
✦ Хранит содержимое файлов на своей дисковой
подсистеме
HDFS: запрос с отказом DataNode
NameNode отправляет клиента на “живую” реплику файла
HDFS: запрос с отказом NameNode
HDFS: выводы
✦Выход из строя датанод не критичен,
пока есть хотя бы одна, хранящая
копию данных
✦Выход из строя неймноды ведёт к
полной недоступности HDFS
YARN
YARN
YARN: узлы и роли
ResourceManager
✦ Запущен на одной машине кластера
✦ Принимает пользовательские запросы на
запуск программ в кластере
✦ Делит ресурсы кластера между программами
✦ Просит ресурсы у конкретных NodeManager
YARN
YARN: узлы и роли
NodeManager
✦ Запущен на “рабочих” машинах кластера
✦ Принимает запросы на создание JVM с
заданным размером HEAP и резервированием
виртуальных ядер
✦ Исполняет пользовательский код в этих JVM
YARN: запуск программы пользователя
YARN: отказ ResourceManager
Вспоминаем картинку про
менеджера и разработчика
YARN: выводы
✦Выход из строя NodeManager’ов
приводит к потере части ресурсов
кластера
✦Выход из строя ResourceManager’а
приводит к невозможности запуска
чего-либо на кластере
Опыт Badoo по эксплуатации
Hadoop до HA
До HA: edit-logs && fsimage
При старте, NN производит combine своих edit-
логов с транзакциями
○ если NN долго не перезапускалась, то
restart мог достигать нескольких часов
Решение:
○ перезапуск NN не реже чем раз в месяц
○ ручное поэтапное подсовывание edit-логов
○ использовать свежий Hadoop :)
○ правильно настроить edit-logs
До HA: совсем грустно
Однажды мы не смогли подняться из edit-логов
1. Пропатчили код восстановления
2. Сделали binary-патч одного jar-файла
3. Скопировали все edit-логи на отдельную
машину
4. Восстановились с патченным кодом
5. Скопировали snapshot обратно
6. …
7. PROFIT!
8. Downtime - почти сутки
В итоге, зачем нужен HA?
При HA Риски без HA
✦Fault-tolerance
✦Низкий downtime
✦Не теряем $$$
✦Крепкий сон
✦HDFS => набор
несвязных
бинарей
✦Вместо
вычислительного
кластера - куча
несвязных машин
Hadoop в Badoo
✦Инсталляция из 67 машин
✦Ёмкость HDFS ~ 850 Tb, 50M объектов
✦CPU: 2700 cores
✦RAM: 10 Tb
Hadoop в Badoo: ETL
✦ ETL-процессы
Загрузили много данных из внешних
источников, посчитали свёртки, выгрузили в
аналитическую БД
✦ > 700 заданий в сутки
✦ Десятки Tb на чтение
Hadoop в Badoo: Deep storage
✦ Deep storage для хранения исторических данных
✦ “Backup” данных из аналитической базы
✦ По некоторым источникам есть история за
несколько лет
✦ > 600 Tb занятого дискового пространства
Hadoop в Badoo: deep storage
Кластер “чихает” - выпадают ноды :)
Hadoop в Badoo: realtime
✦Многие считают, что Hadoop и realtime -
несовместимо
✦Но при правильных инструментах это не
так :)
✦Keywords: Apache Spark, Storm, Samza
Hadoop в Badoo: realtime
✦Потоковая агрегация событий
✦> 600 типов событий
✦Входная мощность: 350K событий/сек
✦Выходная мощность: 100К метрик/сек
✦Доклад
Цена downtime
✦ Недоступность части данных для аналитиков к
началу business time
✦ Деградация графиков для realtime
✦ Невозможность получения оперативной
статистики
И что же делать?
High Availability в теории
✦Hot standby
✦Round-robin request balancing
✦Шардинг
High Availability в теории
✦Hot standby - используется в
Hadoop для резервирования SPOF
(NameNode, ResourceManager)
✦Шардинг - Federated NameNode
HA HDFS: общая схема
HA HDFS: общая схема
✦Пользовательские запросы по-
прежнему обслуживает одна
активная NN
✦Есть реплика, читающая
журнал с транзакциями
HA HDFS: компоненты failover
HA HDFS: компоненты (Zookeeper)
Zookeeper
Распределённая система с функционалом:

lock-service

leader election

иерархическое хранение конфигураций
В рамках HDFS HA:

выбирает активную NN

предоставляет для неё лок

оповещает об изменении статуса NN
HA HDFS: компоненты (ZKFC)
ZKFailoverController (ZKFC)
Вспомогательный сервис для автоматического
failover’а

запускается на машинах NN

мониторит живость локальной NN

слушает уведомления от Zookeer

производит failover
HA HDFS: компоненты (Journal Node)
✦ Реплика состояния NameNode
✦ Распределённость
✦ Отсутствие SPOF
✦ Запись в самую медленную реплику не тормозит
общий процесс
Механизм failover
https://issues.apache.org/jira/browse/HDFS-2185
HDFS failover: summary
✦Активная NN держит лок в ZK
✦Если лок пропал, то произвольный
ZKFC пытается сделать свою NN
активной в ZK
✦Если удалось - переводит остальные
NN в standby, а локальную делает
active
HA YARN: общая схема
HA YARN: общая схема
✦ResourceManager’ы используют
механизм leader-election,
предоставляемый YARN
✦Для репликации состояния мастера
используется хранилище Zookeeper
✦Контроллер failover’а встроен в сам
демон RM, и не требует отдельного
приложения
HA: внедрение
✦Research ~ 5 дней
✦Инсталляция на dev-кластере: 2 дня
✦Стрельбы/проверка
работоспособности – 2 дня
✦Адаптация клиентов – 2 дня
HA: внедрение
✦С момента внедрения – не было
даунтаймов дольше 10 секунд
✦Переключения между “мастерами”
иногда случаются
✦Но не оказывают существенного
влияния
С другой стороны баррикад
(настройка клиентов)
HDFS: клиентский API
✦ Native API
клиенты - в основном - JAVA
JAVA-клиенты знают про конфигурацию HA
✦ WebHDFS
HTTP-based, для любого языка
клиенты не знают, какая NN активная
WebHDFS: standby NN
curl http://stanbynn.domain:50070/webhdfs/v1/?op=LISTSTATUS
{
"RemoteException":
{
"exception":"StandbyException",
"message":"Operation category READ is not supported in
state standby"
}
}
Standby-нода не обслуживает клиентские запросы
http://$host:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeStatus
WebHDFS: вариант 1
WebHDFS: вариант 1
Pro:
1. Просто, как валенок
Cons:
2. Лишний HTTP-вызов
3. Имплементация под
каждый ЯП
(у нас их много :)
WebHDFS: вариант 2
Программный балансировщик

прокси перед NN

проверяет апстримы через URL
http://$host:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeStatus
Более одного варианта:

Nginx

HAProxy

ваш любимый
WebHDFS: вариант 3 (hardware balancer)
✦ В Badoo - на входе в каждый ДЦ
✦ Маршрутизирует весь трафик
✦ Имеет функции и возможности тюнинга,
превосходящие программный балансер
✦ Умеем его готовить
✦ Применили для WebHDFS
Советы из опыта эксплуатации
HDFS: rock your NameNode
✦ Простое правило:
1М файлов = 1 Gb heap size для NN
✦ В противном случае наблюдается деградация
✦ Не влезли в RAM одного хоста - добро
пожаловать в Federated HDFS (мы пока не
доросли до него)
HDFS: rock your NameNode
✦ Вдохновлялись статьей от Hortonworks
✦ Асинхронное логирование операций с HDFS (у
нас их > 3K RPS)
✦ Достаточное число потоков для обработки API
запросов
✦ Выключили atime (как и в обычных FS на
наших серверах)
YARN: tune NodeManager
✦ Увеличили HEAP size
✦ В мирное время не требуется, но у нас
приложения Spark используют его для обмена
промежуточными данными
HDFS: datanode
✦ Т.к. репликация
программная, то нет
большого смысла
использовать RAID
✦ JBOD - наш друг: сила
в шпинделях!
HDFS: выбор диска для блоков
HDFS: выбор диска для блоков
✦ By default - Round Robin
✦ Но на первом диске - OS => он заведомо меньше
✦ Всегда образуется перекос
✦ Решение 1: настройка для датаноды
AvailableSpaceVolumeChoosingPolicy
✦ Решение 2: Hadoop 3 + междисковый балансер
Человек против машины
Может ли один аналитик уложить кластер?
Нет ничего невозможного!
✦ Пишет 4-х этажный SQL
✦ Запускаем, ждём 5 минут
✦ Забиваем IN/OUT eth на датанодах
✦ Забиваем свитч
✦ Залезаем в iowait
✦ PROFIT!
How to avoid
✦ На датанодах - 10Gb eth
или:
✦ Стараемся уважать data-locality
(работаем с данными по месту их физического
хранения)
Что вы узнали
✦ Из каких базовых сервисов состоит Hadoop
✦ Какие там существуют SPOF
✦ С помощью каких средств они устраняются
✦ Какие действия предпринять для адаптации
клиентов кластера к HA
Полезные материалы
✦ https://tech.badoo.com
✦ Доклад Badoo про использование Hadoop
✦ Инструкции по настройке HA
✦ Тюнинг NameNode
Кажется, я обещал 2 картины?
Спасибо!
krash@corp.badoo.com
krash3@gmail.com

Más contenido relacionado

La actualidad más candente

Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into BadooAnton Turetsky
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooBadoo Development
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Anton Turetsky
 
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)Ontico
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Ontico
 
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)Ontico
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Ontico
 
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Badoo Development
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Ontico
 
Расширения для PostgreSQL
Расширения для PostgreSQLРасширения для PostgreSQL
Расширения для PostgreSQLAnastasia Lubennikova
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаAnastasia Lubennikova
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)Ontico
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Ontico
 
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Ontico
 
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...Ontico
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовFuenteovejuna
 

La actualidad más candente (20)

Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
 
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
 
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 
Расширения для PostgreSQL
Расширения для PostgreSQLРасширения для PostgreSQL
Расширения для PostgreSQL
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
 
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
 

Similar a Alex Krasheninnikov – Hadoop High Availability

Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Alexey Zinoviev
 
Lapan 20.04 hadoop h-base
Lapan 20.04 hadoop h-baseLapan 20.04 hadoop h-base
Lapan 20.04 hadoop h-basekuchinskaya
 
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)Ontico
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache HadoopDotNetConf
 
5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоадаBadoo Development
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFSRoman Brovko
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop Vladimir Klimontovich
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...it-people
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014Alex Chistyakov
 
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 на примере LeoFSHappyDev
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Ontico
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDAndrew Pantyukhin
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephOSLL
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 

Similar a Alex Krasheninnikov – Hadoop High Availability (20)

Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
Lapan 20.04 hadoop h-base
Lapan 20.04 hadoop h-baseLapan 20.04 hadoop h-base
Lapan 20.04 hadoop h-base
 
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache Hadoop
 
5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
 
Apache Hadoop
Apache HadoopApache Hadoop
Apache Hadoop
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014
 
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
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSD
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы Ceph
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 

Más de Badoo Development

Viktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationViktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationBadoo Development
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
Григорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUГригорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUBadoo Development
 
Андрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерАндрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерBadoo Development
 
Филипп Уваров, Avito
Филипп Уваров, AvitoФилипп Уваров, Avito
Филипп Уваров, AvitoBadoo Development
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicBadoo Development
 
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentCocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentBadoo Development
 
Андрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхАндрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхBadoo Development
 
Александр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsАлександр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsBadoo Development
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноBadoo Development
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruBadoo Development
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooBadoo Development
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma Badoo Development
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoBadoo Development
 
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов» Badoo Development
 
Как мы готовим MySQL
 Как мы готовим MySQL  Как мы готовим MySQL
Как мы готовим MySQL Badoo Development
 
Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Badoo Development
 
Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кодаBadoo Development
 
Versioning strategy for a complex internal API
Versioning strategy for a complex internal APIVersioning strategy for a complex internal API
Versioning strategy for a complex internal APIBadoo Development
 

Más de Badoo Development (20)

Viktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationViktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel Automation
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Григорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUГригорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RU
 
Андрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерАндрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.Браузер
 
Филипп Уваров, Avito
Филипп Уваров, AvitoФилипп Уваров, Avito
Филипп Уваров, Avito
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magic
 
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentCocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
 
Андрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхАндрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данных
 
Александр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsАлександр Зобнин, Grafana Labs
Александр Зобнин, Grafana Labs
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, Badoo
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, Erlyvideo
 
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
 
Как мы готовим MySQL
 Как мы готовим MySQL  Как мы готовим MySQL
Как мы готовим MySQL
 
Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo
 
ChromeDriver Jailbreak
ChromeDriver JailbreakChromeDriver Jailbreak
ChromeDriver Jailbreak
 
Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кода
 
Versioning strategy for a complex internal API
Versioning strategy for a complex internal APIVersioning strategy for a complex internal API
Versioning strategy for a complex internal API
 

Alex Krasheninnikov – Hadoop High Availability

  • 1.
  • 2. О чем доклад? ✦Основные узлы и компоненты Hadoop ✦Зачем обеспечивать высокую доступность кластера ✦Как постичь дзен Hadoop High Availability (HA) ✦Наш опыт внедрения HA
  • 3. Что будет в докладе 5полезных ссылок 2 72слайда про Hadoop 2картины Ложкина 5блок-схем 4 1 КО 5классных советов истории факапов sequence diagrams
  • 5. Hadoop "на пальцах" Hadoop Distributed FileSystem Файловая система ● Иерархическая ● Распределенная ● С репликацией Yet Another Resource Negotiator Вычислительные ресурсы кластера ● Набор нод ● Ядра (vCores) ● RAM Программный комплекс
  • 8. HDFS: узлы и роли NameNode ✦ Центральный узел кластера ✦ Хранит индекс FS ✦ Предоставляет API для манипуляций с ним ✦ Знает, где лежат данные
  • 10. HDFS: узлы и роли DataNode ✦ Принимает read/write запросы к содержимому файлов HDFS ✦ Хранит содержимое файлов на своей дисковой подсистеме
  • 11. HDFS: запрос с отказом DataNode
  • 12. NameNode отправляет клиента на “живую” реплику файла
  • 13. HDFS: запрос с отказом NameNode
  • 14. HDFS: выводы ✦Выход из строя датанод не критичен, пока есть хотя бы одна, хранящая копию данных ✦Выход из строя неймноды ведёт к полной недоступности HDFS
  • 15. YARN
  • 16. YARN
  • 17. YARN: узлы и роли ResourceManager ✦ Запущен на одной машине кластера ✦ Принимает пользовательские запросы на запуск программ в кластере ✦ Делит ресурсы кластера между программами ✦ Просит ресурсы у конкретных NodeManager
  • 18. YARN
  • 19. YARN: узлы и роли NodeManager ✦ Запущен на “рабочих” машинах кластера ✦ Принимает запросы на создание JVM с заданным размером HEAP и резервированием виртуальных ядер ✦ Исполняет пользовательский код в этих JVM
  • 20. YARN: запуск программы пользователя
  • 21. YARN: отказ ResourceManager Вспоминаем картинку про менеджера и разработчика
  • 22. YARN: выводы ✦Выход из строя NodeManager’ов приводит к потере части ресурсов кластера ✦Выход из строя ResourceManager’а приводит к невозможности запуска чего-либо на кластере
  • 23.
  • 24. Опыт Badoo по эксплуатации Hadoop до HA
  • 25. До HA: edit-logs && fsimage При старте, NN производит combine своих edit- логов с транзакциями ○ если NN долго не перезапускалась, то restart мог достигать нескольких часов Решение: ○ перезапуск NN не реже чем раз в месяц ○ ручное поэтапное подсовывание edit-логов ○ использовать свежий Hadoop :) ○ правильно настроить edit-logs
  • 26. До HA: совсем грустно Однажды мы не смогли подняться из edit-логов 1. Пропатчили код восстановления 2. Сделали binary-патч одного jar-файла 3. Скопировали все edit-логи на отдельную машину 4. Восстановились с патченным кодом 5. Скопировали snapshot обратно 6. … 7. PROFIT! 8. Downtime - почти сутки
  • 27. В итоге, зачем нужен HA?
  • 28. При HA Риски без HA ✦Fault-tolerance ✦Низкий downtime ✦Не теряем $$$ ✦Крепкий сон ✦HDFS => набор несвязных бинарей ✦Вместо вычислительного кластера - куча несвязных машин
  • 29.
  • 30. Hadoop в Badoo ✦Инсталляция из 67 машин ✦Ёмкость HDFS ~ 850 Tb, 50M объектов ✦CPU: 2700 cores ✦RAM: 10 Tb
  • 31. Hadoop в Badoo: ETL ✦ ETL-процессы Загрузили много данных из внешних источников, посчитали свёртки, выгрузили в аналитическую БД ✦ > 700 заданий в сутки ✦ Десятки Tb на чтение
  • 32. Hadoop в Badoo: Deep storage ✦ Deep storage для хранения исторических данных ✦ “Backup” данных из аналитической базы ✦ По некоторым источникам есть история за несколько лет ✦ > 600 Tb занятого дискового пространства
  • 33. Hadoop в Badoo: deep storage Кластер “чихает” - выпадают ноды :)
  • 34. Hadoop в Badoo: realtime ✦Многие считают, что Hadoop и realtime - несовместимо ✦Но при правильных инструментах это не так :) ✦Keywords: Apache Spark, Storm, Samza
  • 35. Hadoop в Badoo: realtime ✦Потоковая агрегация событий ✦> 600 типов событий ✦Входная мощность: 350K событий/сек ✦Выходная мощность: 100К метрик/сек ✦Доклад
  • 36. Цена downtime ✦ Недоступность части данных для аналитиков к началу business time ✦ Деградация графиков для realtime ✦ Невозможность получения оперативной статистики
  • 37. И что же делать?
  • 38. High Availability в теории ✦Hot standby ✦Round-robin request balancing ✦Шардинг
  • 39. High Availability в теории ✦Hot standby - используется в Hadoop для резервирования SPOF (NameNode, ResourceManager) ✦Шардинг - Federated NameNode
  • 40. HA HDFS: общая схема
  • 41. HA HDFS: общая схема ✦Пользовательские запросы по- прежнему обслуживает одна активная NN ✦Есть реплика, читающая журнал с транзакциями
  • 43. HA HDFS: компоненты (Zookeeper) Zookeeper Распределённая система с функционалом:  lock-service  leader election  иерархическое хранение конфигураций В рамках HDFS HA:  выбирает активную NN  предоставляет для неё лок  оповещает об изменении статуса NN
  • 44. HA HDFS: компоненты (ZKFC) ZKFailoverController (ZKFC) Вспомогательный сервис для автоматического failover’а  запускается на машинах NN  мониторит живость локальной NN  слушает уведомления от Zookeer  производит failover
  • 45. HA HDFS: компоненты (Journal Node) ✦ Реплика состояния NameNode ✦ Распределённость ✦ Отсутствие SPOF ✦ Запись в самую медленную реплику не тормозит общий процесс
  • 47. HDFS failover: summary ✦Активная NN держит лок в ZK ✦Если лок пропал, то произвольный ZKFC пытается сделать свою NN активной в ZK ✦Если удалось - переводит остальные NN в standby, а локальную делает active
  • 48. HA YARN: общая схема
  • 49. HA YARN: общая схема ✦ResourceManager’ы используют механизм leader-election, предоставляемый YARN ✦Для репликации состояния мастера используется хранилище Zookeeper ✦Контроллер failover’а встроен в сам демон RM, и не требует отдельного приложения
  • 50. HA: внедрение ✦Research ~ 5 дней ✦Инсталляция на dev-кластере: 2 дня ✦Стрельбы/проверка работоспособности – 2 дня ✦Адаптация клиентов – 2 дня
  • 51. HA: внедрение ✦С момента внедрения – не было даунтаймов дольше 10 секунд ✦Переключения между “мастерами” иногда случаются ✦Но не оказывают существенного влияния
  • 52. С другой стороны баррикад (настройка клиентов)
  • 53. HDFS: клиентский API ✦ Native API клиенты - в основном - JAVA JAVA-клиенты знают про конфигурацию HA ✦ WebHDFS HTTP-based, для любого языка клиенты не знают, какая NN активная
  • 54. WebHDFS: standby NN curl http://stanbynn.domain:50070/webhdfs/v1/?op=LISTSTATUS { "RemoteException": { "exception":"StandbyException", "message":"Operation category READ is not supported in state standby" } } Standby-нода не обслуживает клиентские запросы http://$host:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeStatus
  • 56. WebHDFS: вариант 1 Pro: 1. Просто, как валенок Cons: 2. Лишний HTTP-вызов 3. Имплементация под каждый ЯП (у нас их много :)
  • 57. WebHDFS: вариант 2 Программный балансировщик  прокси перед NN  проверяет апстримы через URL http://$host:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeStatus Более одного варианта:  Nginx  HAProxy  ваш любимый
  • 58.
  • 59. WebHDFS: вариант 3 (hardware balancer) ✦ В Badoo - на входе в каждый ДЦ ✦ Маршрутизирует весь трафик ✦ Имеет функции и возможности тюнинга, превосходящие программный балансер ✦ Умеем его готовить ✦ Применили для WebHDFS
  • 60. Советы из опыта эксплуатации
  • 61. HDFS: rock your NameNode ✦ Простое правило: 1М файлов = 1 Gb heap size для NN ✦ В противном случае наблюдается деградация ✦ Не влезли в RAM одного хоста - добро пожаловать в Federated HDFS (мы пока не доросли до него)
  • 62. HDFS: rock your NameNode ✦ Вдохновлялись статьей от Hortonworks ✦ Асинхронное логирование операций с HDFS (у нас их > 3K RPS) ✦ Достаточное число потоков для обработки API запросов ✦ Выключили atime (как и в обычных FS на наших серверах)
  • 63. YARN: tune NodeManager ✦ Увеличили HEAP size ✦ В мирное время не требуется, но у нас приложения Spark используют его для обмена промежуточными данными
  • 64. HDFS: datanode ✦ Т.к. репликация программная, то нет большого смысла использовать RAID ✦ JBOD - наш друг: сила в шпинделях!
  • 65. HDFS: выбор диска для блоков
  • 66. HDFS: выбор диска для блоков ✦ By default - Round Robin ✦ Но на первом диске - OS => он заведомо меньше ✦ Всегда образуется перекос ✦ Решение 1: настройка для датаноды AvailableSpaceVolumeChoosingPolicy ✦ Решение 2: Hadoop 3 + междисковый балансер
  • 67. Человек против машины Может ли один аналитик уложить кластер?
  • 68. Нет ничего невозможного! ✦ Пишет 4-х этажный SQL ✦ Запускаем, ждём 5 минут ✦ Забиваем IN/OUT eth на датанодах ✦ Забиваем свитч ✦ Залезаем в iowait ✦ PROFIT!
  • 69. How to avoid ✦ На датанодах - 10Gb eth или: ✦ Стараемся уважать data-locality (работаем с данными по месту их физического хранения)
  • 70. Что вы узнали ✦ Из каких базовых сервисов состоит Hadoop ✦ Какие там существуют SPOF ✦ С помощью каких средств они устраняются ✦ Какие действия предпринять для адаптации клиентов кластера к HA
  • 71. Полезные материалы ✦ https://tech.badoo.com ✦ Доклад Badoo про использование Hadoop ✦ Инструкции по настройке HA ✦ Тюнинг NameNode
  • 72. Кажется, я обещал 2 картины?