该文发布时间是2022年1月11日。为什么要说时间呢?因为我测试的数据湖iceberg和deltaLake,10个月时间就更新好多新东西,之前测试的基本没啥参考价值了。下面进入正题。
我们Spark版本是2.3.2,每天跑的程序嗷嗷多,占的资源也嗷嗷多。为了方便统计,我做了个资源排行榜看板。
排行榜前10占的资源实在太大了。我想着找个工具来检查一下使用情况。所以找到了Sparklens,这个工具去年我有看到过。只不过当初没考虑这个优化的问题,所以拖到现在。这软件测试完发现很是好用。
言归正传,相信大家的集群都是网络隔离的吧。这两天我看了一下有关这个工具的文章,给我气的啊。都是复制粘贴别人的,身为技术人员就不能自己写一套试试?CSDN上看到复制粘贴气不过骂了几句之后,冷静下来干脆自己写吧。
相关文章帖子在CSDN上搜下看吧。理论知识都是复制粘贴或者官网搬过来,没一个自己测试的。
需要提醒的是,截止2022-01月,这个工具已经4年没更新了。
GitHub:GitHub - qubole/sparklens: Qubole Sparklens tool for performance tuning Apache Spark
官网(后面解析json用):http://sparklens.qubole.com/
先说我们集群版本
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。编译完就得到了包。
根据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/ 目录下
这时候我们需要打开官网,向下翻。输入自己的邮箱,然后把咱们服务器上的json传进去。
然后点击发送等邮件里得到解析地址
打开这个链接就看到官网为我们解析好的报表了。
链接我就不隐藏了,方便其他人观摩,不知道啥时候过期。
查看可优化空间(下图)
(我这个随机森林模型优化空间这么大么?好尴尬)
模拟出每个核数下跑批时间和集群利用率(下图)
实际执行的executor的数量和设置的数量(下图)
显示了应用程序中所有阶段和作业中所有任务的每个值的最小值、最大值、总和和平均值等摘要信息(下图,当然这个图Spark-ui也是有的)
有的集群json文件不好拿下来。当然也可以直接跑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
执行完是这样子滴。
如何优化参数呢?请到Sparklens参数优化查看。传送门
我这个应该是CSDN上唯一自己测试Sparklens的文章了吧,觉得好就收藏。
可以转载但是别抄袭。转载请标明转载地址。