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, являются их собственными. |