下面主要是笔者根据使用Spark过程中的一些调优做一些汇总。
1、调整分配excutor memory
-num-executors 100 --executor-cores 4 --driver-memory 6g --executor-memory 6g
首先先将参数调大一点,然后程序跑通过后。再通过Spark任务的监控页面看资源使用的情况。再来调整各项目参数。一般情况下,调整这几个参数都会很有用。
2、调整JVM垃圾回收算法
可以通过 --conf 来批明使用的垃圾回收算法,对于多核处理器来说,一般是使用CMS+PartNew。自己也可以设置一些其它参数,如年轻代、年老代的各大小,垃圾回收日志的校园等。如下:
--conf "spark.driver.extraJavaOptions=-XX:PermSize=512m -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=10 -XX:+UseCompressedOops -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateS