Top Banner
Наdoop на службе федерального налогового ведомства страны Александр Чистяков, ФКУ “Налог-Сервис”, главный специалист
51

My talk on Hadoop stack operations engineering at OSPCon

Jan 09, 2017

Download

Technology

Alex Chistyakov
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: My talk on Hadoop stack operations engineering at OSPCon

Наdoop на службе федерального налогового ведомства страны

Александр Чистяков, ФКУ “Налог-Сервис”,главный специалист

Page 2: My talk on Hadoop stack operations engineering at OSPCon

Я пришел с миром!

● Меня зовут Саша

● Я работаю в Федеральном Казенном

Учреждении “Налог-Сервис”

на должности главного специалиста

● Я занимаюсь эксплуатацией

Hadoop-кластера Федеральной

Налоговой Службы

Page 3: My talk on Hadoop stack operations engineering at OSPCon

Вы?

● Работаете с большими данными?

● Работаете с очень большими данными?

● Работаете с очень-очень большими

данными

● Кстати, как отличить просто большие

данные от очень больших данных?

Page 4: My talk on Hadoop stack operations engineering at OSPCon

Сразу достанем и измерим

● Похвастаюсь:

● У меня МНОГО RPS*

* совершенно

бесполезных

Page 5: My talk on Hadoop stack operations engineering at OSPCon

Начнем с начала

● Ни одна крутая история не начинается

со слов “мы сидели и пили кофе”

● Эта история началась со слов

“все плохо”

● Повторенных не один раз

Page 6: My talk on Hadoop stack operations engineering at OSPCon

Насколько все было плохо?

● Полстойки BigData-решения от компании Cisco

Page 7: My talk on Hadoop stack operations engineering at OSPCon

Насколько все было плохо?

● Полстойки BigData-решения от компании Cisco

● RedHat Enterprise Linux 6

Page 8: My talk on Hadoop stack operations engineering at OSPCon

Насколько все было плохо?

● Полстойки BigData-решения от компании Cisco

● RedHat Enterprise Linux 6

● Установленный “дистрибутив” Hadoop от компании

Cloudera (на тот момент – 5.2)

Page 9: My talk on Hadoop stack operations engineering at OSPCon

Насколько все было плохо?

● Полстойки BigData-решения от компании Cisco

● RedHat Enterprise Linux 6

● Установленный “дистрибутив” Hadoop от компании

Cloudera (на тот момент – 5.2)

● Разработчики с полным доступом к продакшну

Page 10: My talk on Hadoop stack operations engineering at OSPCon

Насколько все было плохо?

● Полстойки BigData-решения от компании Cisco

● RedHat Enterprise Linux 6

● Установленный “дистрибутив” Hadoop от компании

Cloudera (на тот момент – 5.2)

● Разработчики с полным доступом к продакшну

● Два приложения: Java/YARN/HBase и

Scala/Spark/HBase/Parquet

Page 11: My talk on Hadoop stack operations engineering at OSPCon

Кстати, зачем все это нужно?

● Система контроля НДС – сравнение налоговых

деклараций контрагентов

Page 12: My talk on Hadoop stack operations engineering at OSPCon

Кстати, зачем все это нужно?

● Система контроля НДС – сравнение налоговых

деклараций контрагентов

● ^ когда никого нет на кластере

Page 13: My talk on Hadoop stack operations engineering at OSPCon

Кстати, зачем все это нужно?

● Система контроля НДС – сравнение налоговых

деклараций контрагентов

● ^ когда никого нет на кластере

● Визуализация несоответствий и работа с ними

Page 14: My talk on Hadoop stack operations engineering at OSPCon

Кстати, зачем все это нужно?

● Система контроля НДС – сравнение налоговых

деклараций контрагентов

● ^ когда никого нет на кластере

● Визуализация несоответствий и работа с ними

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

инспекторов

Page 15: My talk on Hadoop stack operations engineering at OSPCon

Кстати, зачем все это нужно?

● Система контроля НДС – сравнение налоговых

деклараций контрагентов

● ^ когда никого нет на кластере

● Визуализация несоответствий и работа с ними

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

инспекторов

● ^ в рабочее время (когда на кластере есть

пользователи)

Page 16: My talk on Hadoop stack operations engineering at OSPCon

Подготовьте мышь к опыту

● Ценности DevOps это:

● C – Culture

● A – Automation

● M – Measurement

● S – Sharing

Page 17: My talk on Hadoop stack operations engineering at OSPCon

C — Culture

● Петербург – культурная столица Российской

Федерации

● В петербургском филиале ФКУ

“Налог-Сервис” принято обращаться друг к

другу по имени-отчеству

Page 18: My talk on Hadoop stack operations engineering at OSPCon

A — Automation

● A – Ansible*

* отстирывает в два раза лучше Вашего

моющего средства!

Page 19: My talk on Hadoop stack operations engineering at OSPCon

Б — Безопасность

● Внутренняя сеть ФКУ не подключена к

интернету

● Нельзя просто так взять и внести или

вынести файлы*

* но если очень хочется...

Page 20: My talk on Hadoop stack operations engineering at OSPCon

Рабочее место специалиста

● Плюсы: можно нормально

выспаться

● Минусы: нет

Page 21: My talk on Hadoop stack operations engineering at OSPCon

Первые шаги

● А – Автоматизация (Ansible)

● Первый проект, в котором я делал ad hoc команды

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

Page 22: My talk on Hadoop stack operations engineering at OSPCon

Первые шаги

● А – Автоматизация (Ansible)

● Первый проект, в котором я делал ad hoc команды

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

● Тем не менее: описание в виде playbooks/roles

● Прямое переиспользование уже накопленного

материала практически невозможно из-за

особенностей Cloudera

Page 23: My talk on Hadoop stack operations engineering at OSPCon

Особенности Cloudera

● Управление через веб-интерфейс (!)

● Параметры хранятся в СУБД PostgreSQL (!!)

● Где-то (?) есть шаблоны для генерации конфигурации

Page 24: My talk on Hadoop stack operations engineering at OSPCon

Особенности Cloudera

● Управление через веб-интерфейс (!)

● Параметры хранятся в СУБД PostgreSQL (!!)

● Где-то (?) есть шаблоны для генерации конфигурации

● Сервисами управляет supervisord

● Конфигурационные файлы supervisord генерируются

при каждом рестарте кластера заново в новом

каталоге с новым уникальным именем (!!!)

Page 25: My talk on Hadoop stack operations engineering at OSPCon

Это безумие? Это Cloudera!

● Веб-интерфейс не управляет некоторыми параметрами

● Значения вида -Xmx2048m не поддерживаются из-за

буквы m (только значения в байтах)

● Как быть, если нужно задать значение более 4-х

гигабайт (в Int такое не поместится)?

Page 26: My talk on Hadoop stack operations engineering at OSPCon

Это безумие? Это Cloudera!

● Веб-интерфейс не управляет некоторыми параметрами

● Значения вида -Xmx2048m не поддерживаются из-за

буквы m (только значения в байтах)

● Как быть, если нужно задать значение более 4-х

гигабайт (в Int такое не поместится)?

● ^ Зачем такое может быть нужно честному человеку?

Page 27: My talk on Hadoop stack operations engineering at OSPCon

Укрощение строптивой

● Описали текущую конфигурацию при помощи Ansible

● Выключили веб-интерфейс

Page 28: My talk on Hadoop stack operations engineering at OSPCon

Укрощение строптивой

● Описали текущую конфигурацию при помощи Ansible

● Выключили веб-интерфейс

● Получили набор удивительных проблем при

рестарте узла: сервис Cloudera удаляет всю

конфигурацию supervisord

● Решили это переносом конфигурации в неизвестный

сервису каталог

Page 29: My talk on Hadoop stack operations engineering at OSPCon

M — Measurement

● Church of Metrics

● В первую же неделю работы мы пронесли в закрытый

контур ФНС LXC-контейнер с Grafana и

Graphite/Whisper

● Обычно, увидев интерфейс Grafana, люди теряют волю

и становятся адептами нашей церкви

● Так и вышло

Page 30: My talk on Hadoop stack operations engineering at OSPCon

П — Проблемы

● 100% утилизация системного HDD на машине с контейнером

Grafana/Graphite/Whisper

● Постоянные жалобы разработчиков, которые теперь

умеют смотреть на графики (научили на свою голову)

Page 31: My talk on Hadoop stack operations engineering at OSPCon

П — Проблемы

● 100% утилизация системного HDD на машине с контейнером

Grafana/Graphite/Whisper

● Постоянные жалобы разработчиков, которые теперь

умеют смотреть на графики (научили на свою голову)

● Как ни странно, жалобы имели под собой основу –

одна из нод HBase не успевала записывать на

системный диск логи

Page 32: My talk on Hadoop stack operations engineering at OSPCon

Р — Решения

● O – OpenTSDB (time series database)

● Работает как сервис поверх HBase

● А у нас уже есть HDFS и HBase

Page 33: My talk on Hadoop stack operations engineering at OSPCon

О — Опять проблемы

● O – OpenTSDB (time series database)

● Работает как сервис поверх HBase

● А у нас уже есть HDFS и Hbase

● Интерфейс рисования графиков в Grafana для

интеграции с OpenTSDB нравится далеко не всем

Page 34: My talk on Hadoop stack operations engineering at OSPCon

C - CPU

● График CPU

за 7 дней

Page 35: My talk on Hadoop stack operations engineering at OSPCon

Н - Недогруз

● График CPU

за 12 часов

Page 36: My talk on Hadoop stack operations engineering at OSPCon

Ж — Жадность

● График

утилизации

дисков

за 15 минут

Page 37: My talk on Hadoop stack operations engineering at OSPCon

Д — Дисбаланс

● График

утилизации

дисков

за 7 дней

Page 38: My talk on Hadoop stack operations engineering at OSPCon

О — Отказ

● Один из

дисков

сломался

и его никто

не рвется

менять

(не проблема)

Page 39: My talk on Hadoop stack operations engineering at OSPCon

Д — Другой отказ

● supervisord в Cloudera так настроен, что после трех

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

● Однажды у нас выключились 11 из 14 region серверов

в HBase

● Кластер работал БЕЗ ПОТЕРИ

ПРОИЗВОДИТЕЛЬНОСТИ

Page 40: My talk on Hadoop stack operations engineering at OSPCon

Д — Другой отказ

● supervisord в Cloudera так настроен, что после трех

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

● Однажды у нас выключились 11 из 14 region серверов

в HBase

● Кластер работал БЕЗ ПОТЕРИ

ПРОИЗВОДИТЕЛЬНОСТИ

● ^ Помните слайд про “недогруз”?

Page 41: My talk on Hadoop stack operations engineering at OSPCon

Л — Локальность

● Способность region server читать данные с data node

через unix socket, не задействуя сеть

Page 42: My talk on Hadoop stack operations engineering at OSPCon

Л — Локальность

● Была 0 на всех region servers

● На HDFS data nodes зарегистрированы по FQDN

● На HBase region servers зарегистрированы по short

names

● Несовпадение имен – region servers не распознают

локальность и не могут использовать unix socket

Page 43: My talk on Hadoop stack operations engineering at OSPCon

Л — Локальность

● Семь бед – один restart всех data nodes

● После рестарта регистрируются по коротким именам

● Делаем major compaction всех таблиц – локальность

становится почти 100%

Page 44: My talk on Hadoop stack operations engineering at OSPCon

Л — Локальность

● Семь бед – один restart всех data nodes

● После рестарта регистрируются по коротким именам

● Делаем major compaction всех таблиц – локальность

становится почти 100%

● И НИКАКОГО ПРИРОСТА ПРОИЗВОДИТЕЛЬНОСТИ!

Page 45: My talk on Hadoop stack operations engineering at OSPCon

Б — Безысходность

● S - Sampling

● kill -QUIT pid

● Скрипт на bash для сэмплинга заданных контейнеров

● Анализ полученных логов вручную

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

● ^ удалось быстро исправить

Page 46: My talk on Hadoop stack operations engineering at OSPCon

Б — Безысходность

● S - Sampling

● kill -QUIT pid

● Скрипт на bash для сэмплинга заданных контейнеров

● Анализ полученных логов вручную

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

● ^ удалось быстро исправить

● На этом хорошие новости кончились – далее в сэмплах

видим код счета в приложении

Page 47: My talk on Hadoop stack operations engineering at OSPCon

К — Качество

● Размер кластера не так важен

● Критически важна способность алгоритма

параллелиться

Page 48: My talk on Hadoop stack operations engineering at OSPCon

D — Docker

● Новая модная технология

● Которую мы любим и умеем

● К сожалению, стандартная сеть в Docker не позволяет

развернуть YARN

● Использование OpenVSwitch (который зависает в

предсказуемые, к счастью, моменты)

● Сильная фрустрация всех участников, отказ от Docker

Page 49: My talk on Hadoop stack operations engineering at OSPCon

S — Sharing

● Три интенсивные тренировочные сессии

● Несколько часов обучающего видео

● План создания видеотренингов и практических работ

на ближайшие полгода

● Как показала практика – в рамках интенсивных трех-

и пятидневных сессий запомнить нужный объем

информации невозможно

Page 50: My talk on Hadoop stack operations engineering at OSPCon

Выводы

● Работа в федеральном проекте:

● а) позволяет посетить новые места

● б) позволяет познакомиться с новыми

интересными людьми

Page 51: My talk on Hadoop stack operations engineering at OSPCon

Спасибо за внимание!

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

● С вами был Александр Чистяков

● http://gitinsky.com

[email protected]

● Кстати, мы делаем митапы в Петербурге:

● http://meetup.com/Docker-Spb, http://meetup.com/Ansible-Spb,

http://meetup.com/DevOps-40