该文发布时间是2022年1月11日。为什么要说时间呢?因为我测试的数据湖iceberg和deltaLake,10个月时间就更新好多新东西,之前测试的基本没啥参考价值了。下面进入正题。
我们Spark版本是2.3.2,每天跑的程序嗷嗷多,占的资源也嗷嗷多。为了方便统计,我做了个资源排行榜看板。
排行榜前10占的资源实在太大了。我想着找个工具来检查一下使用情况。所以找到了Sparklens,这个工具去年我有看到过。只不过当初没考虑这个优化的问题,所以拖到现在。
言归正传,相信大家的集群都是网络隔离的吧。这两天我看了一下有关这个工具的文章,给我气的啊。都是复制粘贴别人的,身为技术人员就不能自己写一套试试?CSDN上看到复制粘贴气不过骂了几句之后,冷静下来干脆自己写吧。
什么是Sparklens?相关文章帖子自己在CSDN上自己看吧。懒得再复制粘贴。但是值得提醒的是,截止2022-01月,这个工具已经4年没更新了。
GitHub:GitHub - qubole/sparklens: Qubole Sparklens tool for performance tuning Apache Spark
官网(后面解析json用):http://sparklens.qubole.com/
Sparklens实操先说我们集群版本
| Spark | 2.3.2 |
| hadoop | 2.8.4 |
| Sparklens | github上最新master |
| sbt | 1.3.0 |
从git上把最新版本拉下来之后,需要手动编译成jar包。
因为这玩意儿,是4年前更新的,所以很多网址和包都不好下。我填了很多坑。最后依然没有很好解决。所以我按照目前sbt最新编译方式编译通过了。目前我的方法是以下。
注释掉这个。因为sbt-assembly已经不好下载了。sbt-spark-package已经6年没更新了。
build.sbt文件只留有用的
注意的是版本一定对应自己集群的版本号。现在可以编译了。
不知道怎么写的可以从maven仓库找一下(传送门)
sbt环境OK的情况下,执行 package。编译完就得到了包。
2、如何使用Sparklens?根据github上的操作使用(我实在懒得翻译了,截图给你们)
所以我在执行的时候加上参数。
--jars /data/tmp/liyalong/jar/sparklens_2.11-0.3.2.jar --conf spark.extraListeners=com.qubole.sparklens.QuboleJobListener
//经测试,spark-submit和spark-sql提交任务,都可以 spark-submit --jars /data/tmp/liyalong/jar/sparklens_2.11-0.3.2.jar --conf spark.extraListeners=com.qubole.sparklens.QuboleJobListener --class Model.User_Cz_Bl_Prob_model --master yarn --deploy-mode client --driver-memory 8G --executor-memory 16G --executor-cores 6 --num-executors 15 --conf spark.default.parallelism=450 --conf spark.sql.shuffle.partitions=450 --driver-java-options "-Xss60m" --queue bi /data/source/data_warehouse/model/jar/smzdm_2.11-0.1.jar 2022-01-09 yc
跑完之后会生成json日志。在HDFS的 /tmp/sparklens/ 目录下
3、如何查看日志?这时候我们需要打开官网,向下翻。输入自己的邮箱,然后把咱们服务器上的json传进去。
然后点击发送等邮件里得到解析地址
打开这个链接就看到官网为我们解析好的报表了。
链接我就不隐藏了,方便其他人观摩,不知道啥时候过期。
查看可优化空间(下图)
(我这个随机森林模型优化空间这么大么?好尴尬)
模拟出每个核数下跑批时间和集群利用率(下图)
每个stage下的资源使用情况(下图)
实际执行的executor的数量和设置的数量(下图)
显示了应用程序中所有阶段和作业中所有任务的每个值的最小值、最大值、总和和平均值等摘要信息(下图,当然这个图Spark-ui也是有的)
还是非常棒的。
有的集群json文件不好拿下来。当然也可以直接跑spark程序去获取信息。
4、集群Spark解析日志spark-submit --jars /data/tmp/liyalong/jar/sparklens_2.11-0.3.2.jar --class com.qubole.sparklens.app.ReporterApp qubole-dummy-arg /tmp/sparklens/application_1635837258039_866933.sparklens.json
执行完是这样子滴。
我这个应该是CSDN上唯一自己测试Sparklens的文章了吧,觉得好就收藏。
不要抄袭不要抄袭不要抄袭。我TM最烦就是直接拷贝了。
可以转载但是别抄袭。转载请标明转载地址。



