今天就跟大家聊聊有关spark-JVM的调优原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
性能调优
常规性能调优:分配资源、并行度。。。等
JVM调优(Java虚拟机):JVM相关的参数,通常情况下,如果你的硬件配置、基础的JVM的配置,都可以的话,JVM通常不会造成太严重的性能问题;反而更多的是,在troubleshooting中,JVM占了很重要的地位;JVM造成线上的spark作业的运行报错,甚至失败(比如OOM)。
shuffle调优(相当重要):spark在执行groupByKey、reduceByKey等操作时的,shuffle环节的调优。这个很重要。shuffle调优,其实对spark作业的性能的影响,是相当之高!!!经验:在spark作业的运行过程中,只要一牵扯到有shuffle的操作,基本上shuffle操作的性能消耗,要占到整个spark作业的50%~90%。10%用来运行map等操作,90%耗费在shuffle操作。
spark操作调优(spark算子调优,比较重要):有些算子的性能,是比其他一些算子的性能要高的。foreachPartition替代foreach。
如果一旦遇到合适的情况,效果还是不错的。
1、分配资源、并行度、RDD架构与缓存
2、shuffle调优
3、spark算子调优
4、JVM调优、广播大变量。。。
JVM调优原理概述。
JVM调优里面所有官方都推荐来降低cache操作占比
如何解决?
大家可以自己去调,然后观察spark作业的运行统计!!!然后看看整体运行时间有没有改善!gc是否频繁,gc时间等!上述比例都可以调!根据不同需求来做!
.set("spark.storage.memoryFraction", "0.5")
看完上述内容,你们对spark-JVM的调优原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注天达云行业资讯频道,感谢大家的支持。