Sparklens — это инструмент профилирования для Spark со встроенным симулятором Spark Scheduler: он упрощает понимание ограничений масштабируемости приложений Spark. Это помогает понять, насколько эффективно данное приложение Spark использует предоставленные ему вычислительные ресурсы. Он был реализован и поддерживается в Qubole . Это с открытым исходным кодом ( Apache License 2.0 ) и был реализован в Scala.
Одна интересная особенность Sparklens — это его способность генерировать оценки за один запуск приложения Spark . Он сообщает такую информацию, как предполагаемое время завершения и предполагаемое использование кластера с разным количеством исполнителей, график работы / этапа, который показывает, как были запланированы параллельные этапы в задании, и множество интересных показателей по этапам.
Существует четыре способа использования Sparklens:
- Живой режим
- Автономный режим
- Запустить файл истории событий
- Ноутбуки
В этом посте я сосредотачиваюсь только на живом и автономном режимах.
Живой режим
Sparklens может работать во время выполнения приложения, используя следующие параметры (для
подать искру и
спарк-снаряд ):
1
2
|
--packages qubole:sparklens: 0.2 . 1 -s_2. 11 --conf spark.extraListeners=com.qubole.sparklens.QuboleJobListener |
или программно, добавив зависимость Sparklens в проект Java / Scala (вот пример для Maven):
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
< repositories > <!-- Mandatory: the Sparklens artifact aren't in Maven Central --> < repository > < id >qubole-maven-repo</ id > < name >Qubole Maven Repo</ name > </ repository > < repository > < id >central</ id > < name >Maven Repository Switchboard</ name > < layout >default</ layout > < snapshots > < enabled >false</ enabled > </ snapshots > </ repository > </ repositories > ... < dependency > < groupId >qubole</ groupId > < artifactId >sparklens</ artifactId > < version >0.2.1-s_2.11</ version > </ dependency > |
а затем путем настройки его слушателя следующим образом (для Spark 1.X)
1
2
3
4
5
|
SparkConf conf = new SparkConf(); conf.setMaster(master); conf.setAppName( "Spark app name" ); conf.set( "spark.extraListeners" , "com.qubole.sparklens.QuboleJobListener" ); JavaSparkContext jsc = new JavaSparkContext(conf); |
или следующим образом (для Spark 2.x)
1
2
3
4
5
6
|
SparkSession spark = SparkSession .builder() .appName( "Spark app name" ) .master(master) .config( "spark.extraListeners" , "com.qubole.sparklens.QuboleJobListener" ) .getOrCreate(); |
Автономный режим
Sparklens может быть запущен позже и не обязательно во время выполнения. Это можно установить, добавив следующее свойство в конфигурацию приложения Spark:
1
|
conf.set( "spark.sparklens.reporting.disabled" , "true" ); |
В конце выполнения приложения Spark создается только файл данных JSON. Каталог сохранения по умолчанию — / tmp / sparklens , но можно изменить место назначения с помощью следующего свойства конфигурации:
1
|
conf.set( "spark.sparklens.data.dir" , "/home/guglielmo/sparklens" ); |
Этот файл затем может быть использован для запуска Sparklens независимо через
Команда spark-submit выглядит следующим образом:
1
2
|
$SPARK_HOME/bin/spark-submit --packages qubole:sparklens: 0.2 . 1 -s_2. 11 \ -- class com.qubole.sparklens.app.ReporterApp qubole-dummy-arg <datafile_path> |
Приведенная выше команда, начиная с файла данных JSON, создает отчет, имеющий такую же структуру и содержащий те же результаты, что и для отчета, созданного в режиме реального времени.
Отчет
Это информация, доступная в окончательном отчете:
- Статистика эффективности (время водителя и исполнителя, критическое и идеальное время приложения, потери в основных вычислительных часах водителем и исполнителем).
- Прогнозируемое время настенных часов и использование кластера с различным количеством исполнителей.
- За этап метрики.
- Исполнители доступны и исполнители требуются с течением времени.
- Агрегатные метрики на основе задач.
Вывод
Я и моя команда начали применять этот инструмент в последнее время, и пока мы обнаружили, что действительно полезно понимать пределы масштабируемости приложений Spark, которые разрабатываются другими командами, но которые затем должны быть выполнены в нашей инфраструктуре. Итоговый отчет, сгенерированный этим инструментом, дает исчерпывающий набор информации, которая определенно помогает указать правильное направление при выявлении потенциальных проблем масштабируемости и областей для улучшения.
Сгенерированные отчеты представлены в текстовом формате, который содержит все показатели и информацию, упомянутые выше. Qubole обеспечивает
онлайн-сервис, который генерирует удобный и элегантный отчет с интерактивными диаграммами и таблицами, начиная с загруженного файла данных JSON. Если вашей организации не разрешено делиться данными JSON, сгенерированными с помощью приложения Sparklens на Spark, выполняющегося в вашей корпоративной инфраструктуре, вам следует придерживаться текстовых отчетов. Для решения подобных ситуаций я думаю о реализации и выпуске библиотеки Java с открытым исходным кодом для создания удобных для пользователя отчетов в предварительной среде, начиная с файлов данных Sparklens JSON или текстовых отчетов. Пожалуйста, зарегистрируйте свой интерес к этой библиотеке, комментируя этот пост. Спасибо.
Смотреть оригинальную статью здесь: Sparklens: инструмент для оптимизации приложений Spark Мнения, высказанные участниками Java Code Geeks, являются их собственными. |