1、调优背景
Spark作为Zeppelin的SQL底层执行引擎,通过Thriftserver处理jdbc连接,为提高硬件资源利用率、IO带宽和内存利用率,特针对性的进行Spark性能调优,目的是提高多租户环境下Spark SQL执行效率。
2、整体调优结果
表2-1 整体调优结果
sql NO. |
MR |
sp-1(s) |
sp-2(p) |
sp-3(ec) |
sp-4(or) |
sp-5 |
sql1 |
690 |
71 |
37.7 |
29.5 |
29.2 |
27.4s |
sql2 |
428.2 |
96.6 |
61 |
32.3 |
31.6 |
33.5 |
sql3 |
192.5 |
138.5 |
47.3 |
35.4 |
37.3 |
35.4 |
sql4 |
188 |
154. |
76.8 |
51.7 |
49.5 |
48.8 |
sql5 |
1409 |
393 |
265 |
184 |
179.5 |
231 |
sql6 |
580.6 |
147.7 |
173 |
52 |
53.4 |
43.5 |
sql7 |
9128.5 |
2467 |
1240 |
1176 |
1258 |
1274 |
sql8 |
216 |
21 |
40 |
18.1 |
18.7 |
21.5 |
sql9 |
404 |
127 |
113 |
116.2 |
112.5 |
117.4 |
调优随机选取线上9条SQL,表横轴是调优测试项目,测试在集群空闲情况下进行,后一个的测试都是叠加前面测试参数。从数据可参数经过调优,理想环境下性能相对Spark默认参数可提高50%到300%。
表2-2 调优项目说明
测试项目 |
说明 |
MR |
使用Hive测试 |
sp-1 |
默认spark参数测试 |
sp-2 |
spark.sql.shuffle.partitions参数 |
sp-3 |
executor与core参数比例 |
sp-4 |
spark.shuffle.*参数 |
sp-5 |
spark.sql.files.openCostInBytes参数 |
主要调优参数就是这几个,实际调优参数不止这几个,下文将说明。此外因为Spark现在默认开启tungsten,所以省略tungsten调参。
3、单个参数调优记录
1)并行度测试记录
表3-1 并行度调优结果
sql NO. |
200 partitions |
400 partitions |
600 partitions |
sql1 |
71 |
50 |
37.7 |
sql2 |
96.6 |
95 |
61 |
sql3 |
138.5 |
126 |
47.3 |
sql4 |
154. |
179 |
76.8 |
sql5 |
393 |
303.8 |
265 |
sql6 |
147.7 |
186 |
173 |
sql7 |
2467 |
1626 |
1240 |
sql8 |
232.7 |
37 |
40 |
sql9 |
127 |
136 |
113 |
从调优结果和参考其他公