Upload
ontico
View
719
Download
2
Embed Size (px)
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
• http://meetup.com/DevOps-40
• Пожалуйста, ваши вопросы!