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

<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

spark应用程序

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

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

    Sparklens是带有内置Spark Scheduler模拟器的Spark概要分析工具:它使您更容易理解Spark应用程序的可伸缩性限制. 它有助于了解给定Spark应用程序使用提供给它的计算资源的 ...

  2. Spark菜鸟学习营Day5 分布式程序开发

    Spark菜鸟学习营Day5 分布式程序开发 这一章会和我们前面进行的需求分析进行呼应,完成程序的开发. 开发步骤 分布式系统开发是一个复杂的过程,对于复杂过程,我们需要分解为简单步骤的组合. 针对每 ...

  3. [学习笔记]黑马程序员Spark全套视频教程,4天spark3.2快速入门到精通,基于Python语言的spark教程

    文章目录 视频资料: 思维导图 一.Spark基础入门(环境搭建.入门概念) 第二章:Spark环境搭建-Local 2.1 课程服务器环境 2.2 Local模式基本原理 2.3 安装包下载 2.4 ...

  4. 《循序渐进学Spark》一1.6 使用Spark Shell开发运行Spark程序

    本节书摘来自华章出版社<循序渐进学Spark>一书中的第1章,第1.6节,作者 小象学院 杨 磊,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.6 使用S ...

  5. 使用Spark Shell开发运行Spark程序

    使用Spark Shell开发运行Spark程序 Spark Shell是一种学习API的简单途径,也是分析数据集交互的有力工具. 虽然本章还没涉及Spark的具体技术细节,但从总体上说, Spark ...

  6. Spark在Yarn上运行Wordcount程序

    过往记忆专注于Hadoop.Spark.Hive.Flume.Hbase,QQ交流群:138615359 首页 Hadoop Spark Hive Hbase Flume 面试题 面试题 数据结构 算 ...

  7. spark写入oracle 优化,spark读写数据库大表分区性能优化

    spark读写数据库大表分区性能优化:经常会遇到spark读写数据库再做分析,像mysql或oracle. 在数据量很大的情况下,如果只有一个worker一个excutor一个task,那你excut ...

  8. 小程序授权登录的体验优化

    小程序授权登录的体验优化 大多数小程序的登录,都是这样设计的: 进来就提示你需要授权,有部分人可能就会点"拒绝"(拒绝的比例可能超出我们的预估) 然后在后续操作的时候,就进行不下去 ...

  9. 微信小程序:二开版优化新紫色UI云开发新款壁纸小程序源码

    这是一款由旧版https://airymz.com/3387.html进行优化二开的一个新版本 本壁纸表情包头像小程序采用(dcloud云开发)所以无需服务器与域名 无需服务器.无需域名.云开发直接上 ...

最新文章

  1. Flask的快速入门详细笔记
  2. php 和ajax,PHP与Ajax
  3. linux学习笔记(4):Ubuntu终端字符界面下的重启与关机命令
  4. Python之list每个元素小数点精度控制
  5. 交换局域网(链路层+以太网+交换机)
  6. Java分布式服务框架Dubbo初探(待实践)
  7. servlet 之forward和sendRedirect跳转
  8. 葡萄酒酒进销存单机版_葡萄酒销售问题| 找到销售葡萄酒的最大利润
  9. 双电阻差分电流采样_电阻电桥基础
  10. 【word】公式排版问题
  11. MATLAB 图片压缩一简易方法
  12. Android8.1 framework 微信付款码显示不出来
  13. ESP8266利用Bliker、小爱同学和本地按钮控制4路开关
  14. 台式计算机DNS地址配置无法保存,电脑设置不了DNS地址怎么办
  15. jQuery实现简单实用的H5(手机端)下拉分页加载(所谓的懒加载!!!)
  16. wps office 2005:不得不用的14绝技
  17. 网络工程师的工作内容
  18. 刚安装完成的Jmeter5打开之后没有工作台
  19. 利用Ubuntu的U盘安装盘安装build-essential
  20. Mysql聚簇索引和费聚簇索引的区别

热门文章

  1. P6122-[NEERC2016]Mole Tunnels【模拟费用流】
  2. [2020.11.27NOIP模拟赛]拼图王【dp】
  3. #20071-[NOIP2020模拟赛B组Day6]礼物购买【二分】
  4. codeforces1151 E. Number of Components(计数)
  5. 【背包】逃亡的准备 (ssl 1236)
  6. codeforces 884E Binary Matrix 并查集,滚动数组
  7. Hadoop2.6.0的Intellij Idea 插件
  8. <table/>设置列宽度无效的问题
  9. art-template入门(一)之介绍
  10. 零配置 之 Spring 概述