Слон желтого цвета и его друзья (эксплуатация...

Preview:

Citation preview

Слон желтого цвета и его друзьяAlex Chistyakov

Будем знакомы• Меня зовут Саша

• Я работаю в Федеральном Казенном Учреждении «Налог-Сервис» на должности главного специалиста

• В мои должностные обязанности входит эксплуатация Hadoop-кластера ФНС

Вы?• Готов поспорить, немного программируете?

• Судя по названию конференции — разрабатываете высоконагруженные(?) системы

• Пишете на PHP?

• Имеете опыт работы с MySQL?

• Используете MongoDB?

• ^ Ничего из этих трех пунктов мы в ФКУ «Налог-Сервис» не делаем :)

КДПВ• Ужасного качества фото * (снимал на утюг)

Немного истории• Попасть в большой проект очень просто — надо

сидеть дома и ждать, вам позвонят

• Когда я переступил порог московского филиала, постановка задачи звучала как «всё плохо, необходимо привести всё в порядок»

• Все было не так уж и плохо

Что было (факты)• Полстойки BigData-решения от компании Cisco

Что было (факты)• Полстойки BigData-решения от компании Cisco

• RHEL 6

Что было (факты)• Полстойки BigData-решения от компании Cisco

• RHEL 6

• Установленный «дистрибутив» Hadoop от компании Cloudera версии 5.2

Что было (факты)• Полстойки BigData-решения от компании Cisco

• RHEL 6

• Установленный «дистрибутив» Hadoop от компании Cloudera версии 5.2

• Разработчики в продакшн-системе, меняющие настройки кластера через веб-интерфейс

Что было (факты)• Полстойки BigData-решения от компании Cisco

• RHEL 6

• Установленный «дистрибутив» Hadoop от компании Cloudera версии 5.2

• Разработчики в продакшн-системе, меняющие настройки кластера через веб-интерфейс

• Приложение на Java и приложение на Scala, решающие разные задачи с использованием разных сервисов (YARN/HBase и Spark/Parquet, соответственно)

Бизнес-задачи• Поиск ошибочных данных в налоговых

декларациях путем сравнения деклараций контрагентов

Бизнес-задачи• Поиск ошибочных данных в налоговых

декларациях путем сравнения деклараций контрагентов

• ^ Делается в отсутствие интерактивных пользователей

Бизнес-задачи• Поиск ошибочных данных в налоговых

декларациях путем сравнения деклараций контрагентов

• ^ Делается в отсутствие интерактивных пользователей

• Визуализация найденных несоответствий (помогает налоговым инспекторам формировать требования по НДС)

Бизнес-задачи• Поиск ошибочных данных в налоговых

декларациях путем сравнения деклараций контрагентов

• ^ Делается в отсутствие интерактивных пользователей

• Визуализация найденных несоответствий (помогает налоговым инспекторам формировать требования по НДС)

• Обработка интерактивных запросов от налоговых инспекторов

Бизнес-задачи• Поиск ошибочных данных в налоговых

декларациях путем сравнения деклараций контрагентов

• ^ Делается в отсутствие интерактивных пользователей

• Визуализация найденных несоответствий (помогает налоговым инспекторам формировать требования по НДС)

• Обработка интерактивных запросов от налоговых инспекторов

• ^ Делается в рабочее время

D — DevOps• Culture

• Automation

• Measurement

• Sharing

C — Culture• В петербургском филиале ФКУ «Налог-Сервис»

принято обращаться друг к другу по имени-отчеству

A — Ansible• Как будто есть что-то еще!

Б — Безопасность• Внутренняя сеть не имеет подключения к

интернету

• Ничего нельзя внести и вынести

• Зато можно спать в спальнике на полу в петербургском филиале, пока кластер считает

Первые шаги• Не очень старый, но добрый Ansible

• Первый проект, в котором я при помощи Ansible делал ad hoc команды

• ansible all -a "command" --sudo --user ansible

Первые шаги• Не очень старый, но добрый Ansible

• Первый проект, в котором я при помощи Ansible делал ad hoc команды

• ansible all -a "command" --sudo --user ansible

• Описание конфигурации в виде playbooks/roles

• Прямое переиспользование ролей из других проектов почти невозможно — Cloudera очень специальная вещь

Cloudera — …• Управление через web-interface

• Параметры хранятся в базе PostgreSQL

• Где-то есть шаблоны, на основании которых генерируются конфигурационные файлы сервисов

Cloudera — …• Управление через web-interface

• Параметры хранятся в базе PostgreSQL

• Где-то есть шаблоны, на основании которых генерируются конфигурационные файлы сервисов

• Сервисами заведует supervisord

• Конфигурационные файлы генерируются заново для каждого запуска в каталоге с уникальным монотонно возрастающим номером O_O

Cloudera — …• Web-интерфейс «знает» далеко не про все

возможные параметры

• Значения вида -Xmx2048m не поддерживаются, Cloudera manager разбирает ТОЛЬКО значения в байтах

• Как быть, если нужно задать значение более 4-х гигабайт (в Int не помещается)? :)

Cloudera — …• Web-интерфейс «знает» далеко не про все

возможные параметры

• Значения вида -Xmx2048m не поддерживаются, Cloudera manager разбирает ТОЛЬКО значения в байтах

• Как быть, если нужно задать значение более 4-х гигабайт (в Int не помещается)? :)

• ^ Отдельный вопрос: зачем выделять контейнеру более 4-х гигабайт? O_o

Cloudera — …• Зафиксировали конфигурацию при помощи

Ansible

• Оторвали web interface

• Получили набор странных проблем при рестарте узла (конфигурация удаляется)

• Удивились, перенесли конфигурацию в другой каталог

M — Measurement• Church of Metrics

• В первую же неделю работы мы внесли в закрытый контур LXC-контейнер с Grafana и Graphite/Whisper

• Church of Metrics получила несколько новых адептов :)

H — Highload :)• 100% утилизация системного HDD на машине с

Grafana/Graphite/Whisper

• Жалобы разработчиков (они просто ничего не понимают в мониторинге)

H — Highload :)• 100% утилизация системного HDD на машине с

Grafana/Graphite/Whisper

• Жалобы разработчиков (они просто ничего не понимают в мониторинге)

• Доказательства того, что узел и правда не справляется (в логах видно, что не успевают писаться логи)

O — OpenTSDB• У нас уже есть HDFS и HBase

• Храним метрики в HBase

• Интерфейс рисования графиков в Grafana для OpenTSDB — это боль

С — CPU (7 days)• У нас уже есть HDFS и HBase

• Храним метрики в Hbase

• Интерфейс рисования графиков в Grafana для OpenTSDB — это боль

C — CPU (12 hours)• У нас уже есть HDFS и HBase

• Храним метрики в Hbase

• Интерфейс рисования графиков в Grafana для OpenTSDB — это боль

Ж — Жадность• У нас уже есть HDFS и HBase

• Храним метрики в Hbase

• Интерфейс рисования графиков в Grafana для OpenTSDB — это боль

Б — Баланс• У нас уже есть HDFS и HBase

• Храним метрики в Hbase

• Интерфейс рисования графиков в Grafana для OpenTSDB — это боль

О — Отказ• У нас уже есть HDFS и HBase

• Храним метрики в Hbase

• Интерфейс рисования графиков в Grafana для OpenTSDB — это боль

О — Отказ• supervisord в Cloudera так настроен, что после

трех попыток выключает сервис

• Однажды у нас выключились 11 region servers в HBase

• Кластер работал БЕЗ ПОТЕРИ ПРОИЗВОДИТЕЛЬНОСТИ

О — Отказ• supervisord в Cloudera так настроен, что после

трех попыток выключает сервис

• Однажды у нас выключились 11 region servers в HBase

• Кластер работал БЕЗ ПОТЕРИ ПРОИЗВОДИТЕЛЬНОСТИ

• ^ WTF???!!!

Л — Локальность• Свойство region server читать данные прямо с

data node

Л — Локальность• Была 0 на всех region servers

• На HDFS data nodes — FQDN

• На HBase region servers — короткие символьные имена

• Несовпадение имен — RS не считают, что данные локальны

Л — Локальность• Была 0 на всех region servers

• На HDFS data nodes — FQDN

• На HBase region servers — короткие символьные имена

• Несовпадение имен — RS не считают, что данные локальны

• Рестарт data nodes — теперь используются короткие имена

• Major compaction всех таблиц

Л — Локальность• Была 0 на всех region servers

• На HDFS data nodes — FQDN

• На HBase region servers — короткие символьные имена

• Несовпадение имен — RS не считают, что данные локальны

• Рестарт data nodes — теперь используются короткие имена

• Major compaction всех таблиц

• И НУЛЕВОЙ ПРИРОСТ ПРОИЗВОДИТЕЛЬНОСТИ! :)

S — Sampling• kill -QUIT pid

• Скрипт на bash :)

• Анализ сэмплов вручную

• Слишком частые обращения к HBase metadata

• ^ быстро исправили

S — Sampling• kill -QUIT pid

• Скрипт на bash :)

• Анализ сэмплов вручную

• Слишком частые обращения к HBase metadata

• ^ быстро исправили

• Low hanging fruits кончились, далее проблемы внутри алгоритма — в сэмплах видим счет

Момент истины• Неважно, сколько у вас в кластере узлов

• Важно, насколько хорошо параллелится ваш алгоритм

• Не должно быть большого разброса во временах исполнения однотипных подзадач в контейнерах

D — Docker • Ничего не понятно!

• ^ Необходимость создания изолированной среды

D — Docker • Ничего не понятно!

• ^ Необходимость создания изолированной среды

• «Тонкие контейнеры»

• ^ Не работают, YARN теряется в случае, когда сеть сделана пробросом портов

D — Docker • Ничего не понятно!

• ^ Необходимость создания изолированной среды

• «Тонкие контейнеры»

• ^ Не работают, YARN теряется в случае, когда сеть сделана пробросом портов

• OpenVSwitch

• ^ Бывает, зависает в момент добавления новых сетевых карт в бридж

D — Docker • 2 тестовых машины

• Примерно по 10 контейнеров на каждой

• «Работает — не трогай»

• OpenVSwitch, процедура проверки работоспособности сети и рестарта

• Понимание того, что с Docker нам не по пути :)

S — Sharing• Одна пятидневная и две трехдневные

тренировочные сессии для коллег из московского и петербургского филиалов

• Процесс развертывания всего стека с комментариями, запись видео

• Преподавать — это круто! :)

• Ни за три дня, ни за пять дней материал усвоить невозможно :(

• В планах — дистанционное обучение

В — Выводы• В федеральных проектах тоже есть жизнь

• Она точно такая же, как и в любой большой коммерческой компании

• Стек технологий Hadoop неплохо подходит для анализа больших объемов данных

• Знание, по-прежнему, сила!

С — Спасибо!• С вами был Александр Чистяков

• http://service-nalog.ru

• alex@gitinsky.com

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

• Пожалуйста, ваши вопросы!

Recommended