Бесплатный помощник по настройке приложений Apache Spark от Joom

мониторинг и оптимизация Spark-приложений примеры курсы обучение инструменты, отладка производительности Apache Spark, Spark GUI, Spark SQL для разработчиков и дата-инженеров, проблемы Spark-приложений и методы их решения, курсы по Spark, обучение Apache Spark, курсы Spark-программистов, обучение разработчиков Big Data, разработка Spark-приложений, Школа Больших Данных Учебный Центр Коммерсант

Чтобы сделать наши курсы для дата-инженеров и разработчиков распределенных приложений еще более полезными, сегодня мы расскажем про новый бесплатный сервис от маркетплейса Joom для поиска проблем с производительностью Spark-заданий. Разбираемся, как он работает и чем полезен дата-инженеру.

4 главных проблемы Spark-приложений, их последствия и трудности обнаружения

Если количество Spark-приложений невелико, контролировать их производительность довольно просто. Для этого даже не обязательно использовать специальные средства мониторинга, достаточно Spark UI, о котором мы писали здесь. Однако, если таких приложений множество, существующих возможностей Spark UI не хватает. В частности, для обнаружения перекоса базовых данных нужно найти длинные этапы и вручную просмотреть их. Чтобы обнаружить перелив данных из памяти на диск (spill-эффект), это стоит искать очень тщательно. А если половина исполнителей Apache Spark простаивает, снижая эффективность утилизации кластера, стандартный UI этого фреймворка не покажет это. Поэтому для наилучшего управления множеством заданий Spark нужен другой инструмент, — решили дата-инженеры маркетплейса Joom, где работает более 1000 различных пакетных Spark-приложений, которые создаются десятком команд и запускаются ежедневно или ежечасно. При этом регулярно выпускаются новые приложения, причем не все из них оптимизированы, а объем обрабатываемых данных постоянно увеличивается. Все это приводит к непрерывному росту времени выполнения и стоимости вычислений. Поэтому, когда данных действительно много, дата-инженерам необходим единый инструмент,  который поможет ответить на следующие вопросы:

  • как рабочая нагрузка Spark меняется со временем?
  • насколько стабильны и оптимизированы приложения?
  • есть ли какие-то общие проблемы Spark-приложений, которые делают их намного медленнее и дороже?
  • Какова общая стоимость вычислений?

Для этого инженеры Joom в 2022 году создали набор дэшбордов для мониторинга, которые отображают ключевые показатели Spark-приложений и помогают быстро обнаруживать типичные проблемы с производительностью, не тратя время дата-инженера на ручную проверку каждого из множества заданий. Продукт cloud.joom.ai представляет собой облачный инструмент поиска проблем с производительностью Spark-заданий. В отличие от аналогов, он фокусируется не на показе необработанных метрик, а на обнаружении проблем высокого уровня, которые требуют тщательного внимания дата-инженера.

В частности, Spark Performance Advisor фиксирует проблемы нехватки оперативной памяти для обработки раздела, что приводит к использованию диска в качестве временного пространства (spill-эффект). Чаще всего это происходит при сортировке данных, при их подготовке к соединению.

Другая проблема, которую отслеживает Spark Performance Advisor связана с недостаточно эффективной утилизацией кластера, когда возникают неиспользуемые исполнители, что увеличивает время простоя всех исполнителей. Часто это случается из-за адаптивного механизма выполнения запросов (AQE). Например, один этап использует 16 исполнителей, но генерирует небольшой результат. AQE решает объединить разделы и использовать 4 исполнителя, пока остальные простаивают. Иногда можно сократить количество операций наполовину без особого влияния на время работы. В других случаях лучше отключить AQE, чтобы повысить скорость выполнения задания.

Также исполнители также могут простаивать, если драйвер выполняет слишком много заданий. Например, при вызове внешнего синхронного API и кэшированных датафреймов. В такой ситуации можно распараллелить вызовы внешних API и выполнить их на исполнителях, чтобы ускорить задание в несколько раз.

Внутренние механизмы Spark могут вызвать еще одну проблему, невидную внешне, но негативно снижающую эффективность использования ресурсов. Например, когда задача или этап терпит сбой, они автоматически повторяется несколько раз, и при успешном выполнении последней попытки, обнаружить трату пустую ресурсов на первые попытки почти невозможно. Обычно повторные попытки и потерянное на них время случаются из-за нехватки памяти на исполнителях или недостатка места на диске. Эти проблемы легко исправить, что позволит завершать задания без повторных попыток и сократить время их выполнения иногда более чем на 50%.

Наконец, Spark Performance Advisor от Joom отслеживает еще одну частую проблему распределенных приложений, связанных с неравномерным распределением данных по узлам кластера, когда некоторые исполнители обрабатывают слишком много данных, а другие простаивают. Поскольку чаще всего это происходит при выполнении операций соединения, дата-инженеры Joom советуют изменить способ стратегию этой операции. Например, вместо циклического широковещательного соединения (Broadcast Nested Loop) использовать соединение через слияние (Sort Merge), о чем мы писали здесь.

Таким образом, Spark Performance Advisor от Joom позволяет обнаружить наиболее распространенные проблемы распределенных приложений и дает советы по их устранению. Как попробовать этот инструмент, рассмотрим далее.

Что такое Spark Performance Advisor и как его использовать

Как уже было отмечено ранее, Spark Performance Advisor от Joom представляет собой набор визуальных дэшбордов для автоматического отслеживания таких проблем Spark-заданий, как перекос данных или нехватка памяти (OOM-ошибка). При обнаружении такой проблемы Performance Advisor выдает предупреждение. Также инструмент позволяет заранее предупредить сбой благодаря мониторингу ключевых метрик производительности. А, что особенно важно для дата-инженеров с практической точки зрения, по каждой обнаруженной проблеме продукт компании Joom предлагает подробное руководство. Также сервис предоставляет доступ к API автонастройки для настройки пользовательских заданий Spark.

Примечательно, что сервис предоставляется абсолютно бесплатно. Для его использования необходим только слушатель Spark с открытым исходным кодом, и несколько параметров конфигурации. Продукт Joom обрабатывает только телеметрию приложения, не требуя  реальных пользовательских данных. Благодаря небольшому размеру, эта библиотека не влияет на общую производительность системы и не увеличивает нагрузку на сеть.

А, поскольку объем обрабатываемых данных относительно невелик, разработчики даже не берут никакой платы за использование сервиса, для регистрации в котором нужна только учетная запись Google. Таким образом, использование Spark Performance Advisor от Joom требует только установки крошечного пакета (160 КБ), который будет работать в любой среде, от Databricks LTS до Kubernetes, настройки слушателя событий и двух переменных конфигурации. Общие и подробные результаты мониторинга работы распределенного приложения доступны в облачном интерфейсе продукта https://cloud.joom.ai/.

Освойте тонкости применения Apache Spark для разработки приложений аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://medium.com/@vladimir.prus/announcing-spark-performance-advisor-71ec9d4ab418
  2. https://cloud.joom.ai/
  3. https://towardsdatascience.com/monitoring-of-spark-applications-3ca0c271c4e0
Поиск по сайту