Spark小结及性能调优

    最近转战Spark相关领域,编写了spark版本的LDA算法,在此过程中对程序不断调优同时也对spark系统相关参数进行调优,得到了一下一些经验。

    首先是对于RDD转化为PariRDD,初学者可能会有很多疑问,为什么通过map将RDD转化为tuple后应该有相应的PairRDD操作,但是IDE并么有提示,原因是缺少隐式转换,加入  import org.apache.spark.SparkContext._  即可解决。

    其次,有些情况下combineByKey的性能是十分好的,相当于在每个paritition处做combiner,减少网络传输和处理时间。

    下面是一些参数调整:

     1、spark.driver.maxResultSize 8g    driver获得处理结果的最大内存数,由于我要处理大矩阵,所以这个参数还是不得不改的

     2、spark.yarn.executor.memoryOverhead  2048    跑了一段时间后发现很多executor堆外内存占用过大,采用这个参数后稍好

     3、spark.shuffle.blockTransferService nio     spark 1.2.0以后shuffle service改为了netty,这个很扯淡,我改为nio后堆外内存较少了很多,同时处理时间提示提升了一倍

     先写到这儿,感谢同事何良均提供第三个参数,他的blog地址是http://blog.csdn.net/hit_hlj_sgy/article/list/2

     我的spark LDA github地址是https://github.com/jiangyu/SparkLDA

Print Friendly

jiang yu

Leave a Reply