Компания LinkedIn открыла исходный код своего средства настройки производительности Hadoop и Spark, известного как Dr. Elephant, чтобы помочь пользователям Hadoop и Spark оснастить свои продуктивные среды удобными инструментами самообслуживания.

В размещенном в корпоративном блоге сообщении по поводу этого средства инженер-программист LinkedIn Акшай Рай охарактеризовал Dr. Elephant как простой инструмент для пользователей Hadoop и Spark, помогающий понимать, анализировать и улучшать производительность выполняемых операций.

Hadoop представляет собой свободно распространяемый программный фреймворк для хранения данных и выполнения приложений на кластерах, построенных на основе общераспространенного оборудования. Он позволяет осуществлять распределенную обработку больших объемов данных в вычислительных кластерах, используя простые модели программирования. Hadoop предназначен для масштабирования с уровня единичных серверов до тысяч аппаратных систем, предоставляющих свои локальные ресурсы для вычислений и хранения данных. Apache Spark тоже является Open Source-фреймворком для кластерных вычислений. Spark является быстродействующей системой для обработки больших данных со встроенными модулями для потоковой передачи данных, SQL, машинного обучения и обработки графики.

LinkedIn использует Hadoop и Spark для ежедневного выполнения около 100 тысяч заданий, а поскольку объем генерируемых компанией данных продолжает расти, постоянно расширяются и объемы аналитики на базе Hadoop и Spark. В связи с этим LinkedIn понадобился автоматизированный инструмент настройки.

Поскольку Hadoop обеспечивает распределенное хранение и обработку больших объемов данных с участием ряда взаимодействующих друг с другом компонентов, особенно важно добиться оптимальной производительности каждого компонента, отмечает Раи. «Хотя мы всегда можем оптимизировать базовые аппаратные ресурсы, сетевую инфраструктуру, ОС и другие компоненты стека, контроль над оптимизацией выполняемых в кластере заданий находится исключительно в руках пользователей», — пояснил он.

По словам Раи, Dr. Elephant собирает все метрики заданий Hadoop, анализирует их и представляет результаты анализа в простой форме для удобного использования. Инструмент облегчает настройку заданий, повышая тем самым производительность труда разработчиков и эффективность эксплуатации кластера. При анализе заданий Hadoop и Spark используется набор конфигурируемых эвристических алгоритмов на базе правил, которые дают информацию о том, как исполняется задание, и далее на базе полученных данных выдаются предложения о возможности настройки задания, чтобы оно выполнялось более эффективно.

«В LinkedIn мы сделали для разработчиков использование Dr. Elephant обязательной частью их цикла разработки, — написал Раи. — Для перевода задания в продуктивную среду необходимо получить зеленый сигнал из Dr. Elephant. При любых пользовательских проблемах мы сперва запрашиваем отчет Dr. Elephant. Это заставляет разработчиков писать свои задания в оптимальной форме и стараться, чтобы все задания в итоге высвечивались в Dr. Elephant зеленым цветом. За год с лишним Dr. Elephant стал частью внутренней культуры LinkedIn как общий помощник».

По словам Раи, оптимизации заданий Hadoop препятствует несколько типичных помех. Одна из основных проблем состоит в том, что пользователи не знают, что реально происходит при исполнении заданий и какой объем ресурсов при этом потребляется. Другая проблема в том, что информация, требуемая для проверки задания, разбросана по многим системам.

«Мы имеем менеджер ресурсов, предоставляющий высокоуровневую информацию о задании, главные логи приложений, сотни счетчиков для каждой задачи, разные счетчики для разных типов задач, логии уровня задач, и так далее», — пишет Раи.

Работа Dr. Elephant, по его словам, начинается с получения из менеджера ресурсов YARN списка успешно выполненных и аварийно завершенных приложений. Далее этот инструмент собирает с сервера Job History метаданные для каждого приложения (счетчики задания, конфигурации и данные задач). Имея все эти метаданные, Dr. Elephant запускает комплект эвристических алгоритмов и формирует диагностический отчет как по индивидуальным видам эвристики, так и по всему заданию. Чтобы показать потенциальные проблемы производительности, результатам присваиваются метки по пятибалльной шкале уровня серьезности таких проблем.

LinkedIn разработала Dr. Elephant в середине 2014 г. До этого Hadoop-группа LinkedIn сама анализировала рабочие задания для сотрудников компании, давала им советы по настройке и утверждала задания к запуску в продуктивной среде. Но с ростом числа пользователей справляться с этим стало труднее, и группа решила автоматизировать процесс. В итоге, пишет Раи, появился на свет Dr. Elephant.

«Dr. Elephant очень популярен в LinkedIn, — утверждает Раи. — Люди любят его за простоту. Как семейный доктор, он всегда приходит на помощь и решает около 80 процентов проблем путем простой диагностики. Его работа понятна без пояснений и сфокусирована на том, чтобы помогать пользователям Hadoop понимать и оптимизировать свои рабочие процессы, выдавая предложения на уровне заданий вместо статистики уровня кластера. Подобно тому, как настоящий врач диагностирует проблему, Dr. Elephant тоже анализирует проблему через простые блок-схемы исполнения заданий. По вашему усмотрению Dr. Elephant позволяет вам добавлять любое количество эвристических алгоритмов или правил».

LinkedIn использует Dr. Elephant в большом числе разнообразных сценариев, например для мониторинга выполнения задания в кластере, чтобы понять, почему задание исполняется медленно, как и что нужно подстроить, чтобы улучшить процесс, а также для сравнения текущего и предыдущих вариантов исполнения и отыскания причин неполадок, говорит Раи.

Сегодня, помимо пополнения и улучшения эвристики и расширения инструмента под новые типы заданий, LinkedIn также планирует усилить Dr. Elephant выдачей предложений по настройке конкретных заданий на базе метрик реального времени, визуализацией использования ресурсов кластера и трендов, лучшей интеграцией со Spark и поддержкой большего числа планировщиков.