Spark shuffle优化

2019-07-26  本文已影响0人  clive0x

ExternalSorter.scala 

AppendOnlyMap:k1,v1|k2,v2|k3,v3.....|kn,vn

当内存不足(向executor申请memory不足)时,开始spill,

依次分partition分批次写,每spark.shuffle.spill.batchSize:10000写一次文件,另外一个可调整参数:

spark.shuffle.file.buffer:32k,

BlockStoreShuffleReader.scala

spark.reducer.maxSizeInFlight:48M,单shuffle任务最多同时远程读取48M

spark.reducer.maxReqsInFlight:Int.MaxValue

spark.reducer.maxBlocksInFlightPerAddress:Int.MaxValue

spark.maxRemoteBlockSizeFetchToMem:Int.MaxValue - 512

特别说明下最后一个参数,当blocksize比该参数大时,block读取至文件而非内存。

Spark不管是数据还是shuffle,首先都用内存,可以预见,随着企业级SSD的快速普及,框架淘汰可能性还是很高的。

上一篇 下一篇

猜你喜欢

热点阅读