spark应用程序_Sparklens:Spark应用程序优化工具

spark应用程序

Sparklens是带有内置Spark Scheduler模拟器的Spark分析工具:它使您更容易理解Spark应用程序的可扩展性限制。 它有助于了解给定Spark应用程序使用提供给它的计算资源的效率。 它已在Qubole实施并维护。 它是开源的( Apache License 2.0 ),已经在Scala中实现。

Sparklens的一个有趣特征是它具有通过一次运行Spark应用程序生成估计的能力。 它报告信息,例如估计的完成时间和使用不同数量的执行者的估计的群集利用率,作业/阶段时间线,该时间线显示了如何在作业中安排并行阶段以及每个阶段的指标很有趣。 有四种使用Sparklens的方法:

  • 现场模式
  • 离线模式
  • 在事件历史记录文件上运行
  • 笔记本电脑

在这篇文章中,我仅关注实时和离线模式。

现场模式

通过使用以下选项,Sparklens可以在应用程序执行时运行(对于
火花提交
火花壳 ):

--packages qubole:sparklens:0.2.1-s_2.11
--conf spark.extraListeners=com.qubole.sparklens.QuboleJobListener

或通过编程方式将Sparklens依赖项添加到Java / Scala项目中(这是Maven的示例):


   
   
    qubole-maven-repo
    Qubole Maven Repo
    http://dl.bintray.com/spark-packages/maven/
   
   
   
      central
      Maven Repository Switchboard
      default
      http://repo1.maven.org/maven2
      
        false
      
    
 
...

  qubole
  sparklens
  0.2.1-s_2.11

然后按以下方式配置其侦听器(对于Spark 1.X)

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)

SparkSession spark = SparkSession
  .builder()
  .appName("Spark app name")
  .master(master)
  .config("spark.extraListeners", "com.qubole.sparklens.QuboleJobListener")
  .getOrCreate();

离线模式

Sparklens可以稍后运行,而不必在执行时运行。 可以通过在Spark应用程序配置中添加以下属性来进行设置:

conf.set("spark.sparklens.reporting.disabled", "true");

在Spark应用程序执行结束时,仅生成JSON数据文件。 默认的保存目录是/ tmp / sparklens ,但是可以通过以下配置属性更改目标:

conf.set("spark.sparklens.data.dir", "/home/guglielmo/sparklens");

然后,该文件可用于通过以下方式独立运行Sparklens:
spark-submit命令如下:

$SPARK_HOME/bin/spark-submit --packages qubole:sparklens:0.2.1-s_2.11 \
  --class com.qubole.sparklens.app.ReporterApp qubole-dummy-arg 

上面的命令从JSON数据文件开始,生成的报告具有与实时模式下生成的布局相同且包含相同结果的报告。

那个报告

这些是最终报告中可用的信息:

  • 效率统计信息(驱动程序与执行程序时间,关键和理想应用时间,驱动程序和执行程序浪费的核心计算时间)。
  • 具有不同执行程序计数的预测挂钟时间和群集利用率。
  • 每阶段指标。
  • 随着时间的推移,执行人员可用,执行人员也需要。
  • 基于任务的汇总指标。

结论

我和我的团队最近开始采用此工具,到目前为止,我们发现了解由其他团队开发的Spark应用程序的可伸缩性限制确实有用,但是需要在我们的基础架构中执行。 该工具生成的最终报告提供了一组全面的信息,这些信息绝对有助于指出正确的方向,以发现潜在的可伸缩性问题和需要改进的地方。

生成的报告采用文本格式,其中包含上述所有指标和信息。 Qubole提供了 在线服务 ,可从上传的JSON数据文件开始,生成具有交互式图表和表格的用户友好且优雅的报告。 无论您是组织机构,还是不允许您共享在公司基础结构中执行的Spark应用程序上运行Sparklens生成的JSON数据,都需要保留文本报告。 为了解决这种情况,我正在考虑实现并发布一个开源Java库,以在本地环境中从Sparklens JSON数据文件或文本报告开始生成用户友好的报告。 请通过评论此帖子来注册您对此库的兴趣。 谢谢。

翻译自: https://www.javacodegeeks.com/2019/02/sparklens-tool-spark-applications-optimization.html

spark应用程序

你可能感兴趣的:(大数据,python,java,人工智能,hadoop)