前言
Sparklens如何使用
Sparklens生成的报告
参考
前言
Sparklens是一个可以帮助你了解你的Spark job效率的开源工具。Spark是个近些年来非常受欢迎的基于内存并行计算框架架,它有丰富的API支持,还支持 Spark SQL,MLlib,GraphX和Spark Streaming。在提交Spark Job的时候,我们会需要设置一些config, 虽然这极大的增加了开发者对于Spark job的控制灵活性,但是也会给优化Spark Job带来一些困难。我们平时写Spark Job的时候最长苦恼的应该就是如果和调节memoery,vcore这些参数,资源申请少了会造成job的失败,多了就会造成资源的浪费。所以Sparklens就是这么一个让你更加了解你的job运行情况,从而有效的进行Spark tuning的工具。
Sparklens如何使用
和你的Job一起运行
这种方式是指当你的job在运行的时候,sparklens会实时的开始收集job的运行信息,最后打印结果。只要你的node能联网,那么你只需要在你的提交命令里面加上如下两行(当然如果没有网,你也可以从网上下载package之后打包运行):
--packages qubole:sparklens:0.1.2-s_2.11
--conf spark.extraListeners=com.qubole.sparklens.QuboleJobListener
Job跑完之后使用
这种方式会在你的job运行时生成一个Json文件在HDFS(默认)上,路径默认是/tmp/Sparklens。如果你想要设置自己的路径,可以通过配置spark.sparklens.data.dir来完成。
- 首先你需要在运行你自己的spark job的时候在提交命令里面加上:
--packages qubole:sparklens:0.3.1-s_2.11
--conf spark.extraListeners=com.qubole.sparklens.QuboleJobListener
--conf spark.sparklens.reporting.disabled=true
- 之后根据生成的Json文件,另外启动一个Job来获取分析你的Sparklens的报告结果
./bin/spark-submit --packages qubole:sparklens:0.3.1-s_2.11 --class com.qubole.sparklens.app.ReporterApp qubole-dummy-arg <filename>
从event-log里面获取
这种方式就是根据event log来生成Sparklens的报告,当然你需要在你的spark job里面enable event-log(之前的文章有提到event-log的相关知识)。
./bin/spark-submit --packages qubole:sparklens:0.3.1-s_2.11 --class com.qubole.sparklens.app.ReporterApp qubole-dummy-arg <filename> source=history
Sparklens生成的报告
这里给出一个我自己例子来具体分析下。这里我跑了一个wordcount的spark Job,申请了2个executor(Spark on Yarn,相当于Yarn的container),1G的memory。 应用的是第一种Sparklens的使用方式,在job结束之后,从输出的log里拿到了Sparklens的报告结果。
Printing application meterics. These metrics are collected at task-level granularity and aggregated across the app (all tasks, stages, and jobs).
AggregateMetrics (Application Metrics) total measurements 2
NAME SUM MIN MAX MEAN
diskBytesSpilled 0.0 KB 0.0 KB