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的示例):

<repositories><!-- Mandatory: the Sparklens artifact aren't in Maven Central --><repository><id>qubole-maven-repo</id><name>Qubole Maven Repo</name><url>http://dl.bintray.com/spark-packages/maven/</url></repository><repository><id>central</id><name>Maven Repository Switchboard</name><layout>default</layout><url>http://repo1.maven.org/maven2</url><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)

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 <datafile_path>

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

那个报告

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

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

结论

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

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

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

Sparklens:Spark应用程序优化工具相关推荐

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

    spark应用程序 Sparklens是带有内置Spark Scheduler模拟器的Spark分析工具:它使您更容易理解Spark应用程序的可扩展性限制. 它有助于了解给定Spark应用程序使用提供 ...

  2. spark 应用程序性能优化:12 个优化方法

    1. 优化? Why? How? When? What? "spark 应用程序也需要优化?",很多人可能会有这个疑问,"不是已经有代码生成器,执行优化器,pipelin ...

  3. 调整Apache Spark应用程序的Java垃圾收集

    调整Apache Spark应用程序的Java垃圾收集 王道远黄洁 由王道远和黄杰 发表于公司博客 2015年5月28日 这是来自英特尔SSG STO大数据技术小组的朋友的客座文章. 来源地址: ht ...

  4. 程序分析工具gprof介绍

    程序分析是以某种语言书写的程序为对象,对其内部的运作流程进行分析.程序分析的目的主要有三点:一是通过程序内部各个模块之间的调用关系,整体上把握程序的运行流程,从而更好地理解程序,从中汲取有价值的内容. ...

  5. linux perf - 性能测试和优化工具

    Perf简介 Perf是Linux kernel自带的系统性能优化工具.虽然它的版本还只是0.0.2,Perf已经显现出它强大的实力,足以与目前Linux流行的OProfile相媲美了. Perf 的 ...

  6. 美团点评SQL优化工具SQLAdvisor开源

    介绍 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的 SQL 优化方式包括但不限于:业务层优化.SQL逻 ...

  7. 高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...

    目录: Oracle数据完整性和锁机制  索引及优化之表分析  表分析.约束及表间关系  Oracle体系结构1 Oracle体系结构2  海量数据库及分区1  海量数据库及分区2  海量数据库及分区 ...

  8. 推荐CUDA程序优化的15个策略

    推荐CUDA程序优化的15个策略 0条评论 2011-07-06 09:48   来源:潇湘学子岳麓生的博客 作者: 潇湘学子岳麓生 编辑: 王玉圆 [IT168 技术]在<CUDA程序优化策略 ...

  9. Windows内存管理机密+揭穿内存优化工具的骗局

    原文:The Memory-Optimization Hoax:RAM optimizers make false promises 作者:Mark Russinovich 译者:盆盆   我们在浏览 ...

最新文章

  1. Caffe源码中blob文件分析
  2. 语义分割--RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation
  3. linux中文件的编辑 写入 读取 光标的位置 以及相应的补充
  4. 三、Express 路由
  5. python分类算法的应用_Python基于sklearn库的分类算法简单应用示例
  6. mysql进阶-02-事务的引入与基本的使用
  7. 双代号网络图节点编号原则_难倒一片的双代号网络图你学会了吗?
  8. leetcode题解151-翻转字符串里的单词
  9. [转载]一个任务超时退出的装饰器,用起来真方便
  10. Vue 事件绑定 事件修饰符 条件判断 循环遍历
  11. 在函数‘_start’中:对‘main’未定义的引用
  12. js实现简单的全选和反选
  13. 什么是PLC可编程控制器,理论基础知识讲解QY-KC801
  14. 介绍会议中控系统模块化构成及功能作用
  15. 2023年1月编程语言流行度排名
  16. cents7.6安装rancher
  17. C | 运算符、表达式和语句
  18. WSL登录失败:未授权用户再次计算机上的请求登录类型
  19. 十月二日读书笔记(JSP网页的内置对象)
  20. 企业WiFi安全管家 帮你排忧解难

热门文章

  1. 13、oracle数据库下的游标
  2. 25、jdbc操作数据库(2)
  3. Google 出的 Guava 是个什么鬼
  4. 关于分布式一致性的探究
  5. 为什么说Java中只有值传递(另一种角度)
  6. 认识JVM--第一篇-对象分配&回收算法
  7. C#的float、double与decimal
  8. subList?? subString???
  9. Ajax基本案例详解之$.post的实现
  10. GatewayMetricsFilter网关度量过滤器(服务监控)