troubleshooting

main
Oeljeklaus 7 years ago committed by GitHub
parent 21165bb93c
commit d1927228c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -518,3 +518,32 @@ spark.yarn.executor.memoryOverhead参数针对的的是yarn的提交方式。
通过这个参数调节以后,可以避免以上问题的避免。
对于等待时间就是在出现上述错误的时候连接不上拉去数据的Block Manager就会出现这个问题我们需要在spark-submit脚本中配置等待时长默认是60秒。
## troubleshooting
### troubleshooting之控制shuffle reduce端缓冲大小避免OOM
shuffle过程中优map端的task是不断的输出数据的数据量可能是很大的但是其实reduce端的task并不是等到map端task将属于自己的那份数据全部
写入磁盘文件之后再拉去的map端写一点数据reduce端task就会拉去一部分数据立即进行后面的聚合算子函数的应用。
每次reduce能够拉去多少数据就是由buffer来决定的因为拉去过来的数据都是先放在buffer中的然后才用后面的executor分配的堆内存占比
hashmap去进行后续的聚合函数执行。
reduce端缓冲可能出现什么问题
默认48MBreduce端task一边拉取一边计算不一定一直会拉满48MB的数据可能大多数情况下拉取10MB就计算掉了。
大多数时候也不会出现问题有些时候map端的数据量特别大然后写出的数据特别快reduce端所有的task拉去的时候全部到达自己极限值。
这个时候加上你的reduce端执行的聚合函数的代码就可能创建大量的对象一下子内存就出现OOM。reduce端的内存中就出现了内存溢出。
怎么解决呢?
减少reduce端task缓冲大小这样就不容易出现OOM问题了。
spark作业首先第一要义就是一定要让它跑起来然后再考虑性能。
关于reduce端缓冲大小的另外一面关于性能调优:
如果资源特别充分可以尝试增加reduce端缓冲大小这样就可以减少拉取次数减少网络传输。
配置的参数spark.reducer.maxSizeInflight

Loading…
Cancel
Save