spark调优记录 Execution Memory 和spark.driver.memory优化

环境: Spark1.6.2

目标:提高CPU利用率,降低带宽IO,提高缓存命中率,减少数据落盘。

Spark作为Zeppelin的SQL底层执行引擎,通过Thriftserver处理jdbc连接,为提高硬件资源利用率、IO带宽和内存利用率,特针对性的进行Spark性能调优,目的是提高多租户环境下Spark SQL执行效率。
spark.conf 主要参数调优。
合理的core,mem比例以及并行度是能显著提升执行效率。

任务内存参数配置:

 spark.driver.memory=6g(存在广播所以Driver设置的较大)
 spark.executor.memory=13G
 spark.memory.fraction=0.4


内存参数配置计算公式:
Execution Memory 2.5G =(Heap size(13G)- Reserve Memory(450M))* spark.memory.fraction 0.4 * spark.memory.storageFraction 0.5
用户主导的空间:User Memory 7.5G =(Heap size(13G)- Reserve Memory(450M))* (1 – spark.memory.fraction 0.4)
安全因子:0.9,考虑到内存空间使用和预估的准确度,实际应用过程中会考虑加入一个安全因子。
可用用户主导空间:User Memory * 0.9 = 6.8G(根据实际情况,数据条数 * 每条数据任务后占用内存最大值,基于此评估一个最大值,如果超过这个值就会出现OOM)
效果:解决程序OOM问题,因为任务过程维护了大的数据结构,其主要使用了User Memory的空间,用Spark默认内存配置会导致用户空间OOM。

统一内存管理可以看Spark统一内存管理:Spark统一内存管理:UnifiedMemoryManager

此图像的alt属性为空;文件名为image-16.png@!full


赞(4) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » spark调优记录 Execution Memory 和spark.driver.memory优化

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏