spark 调优经验(续二)
- - CSDN博客云计算推荐文章1. spark性能配置. 我目前的环境是5台机器,每台机器8个核. 答: a方案每个节点会启动8个worker运行8个JVM,每个worker将会启动一个excutors, b方案将会启动一个worker运行一个JVM. 如果数据很小,选择b方案,因为可以节省启动JVM的开销,如果数据很大,启动JVM的时间可以忽略,则选a方案.
spark调优是需要根据业务需要调整的,并不是说某个设置是一成不变的,就比如机器学习一样,是在不断的调试中找出当前业务下更优的调优配置。下面零碎的总结了一些我的调优笔记。
spark 存储的时候存在严重的分配不均的现象,有几台机器在过渡使用, 有几台机器却很少被使用,有几台机器缓存了几十个上百个RDD blocks 有的机器一个RDD blocks 都没有,这样存储有RDD blocks 的可以进行运算,运算的tasks 最多为该机器core数。
spark.storage.memoryFraction 分配给用于缓存RDD的内存的比例
比如如果spark.executor.memory 30g spark.storage.memoryFraction 0.5 则用于缓存的内存为14G 多, 默认留一些做其他用。
RDD 缓存分布不均匀 是影响spark 的很大的性能之一,为什么这么说?
因为有的机器分配给用于RDD 缓存的内存都用完了 ,这样相对而言在这个机器上计算的开销也会大,有的机器缓存占用的内存很少,就算用这个机器来计算,还需要启动Node_local 模式,这样会影响计算的时间。