可用性调优
SPARK-13793
之前的PipedRDD实现容错性较差,只要发生fetch错误时,整个job就会失败,该PR改进了PipedRDD从而可以更优雅地处理fetch错误,使得job可以从失败中恢复;
SPARK-13369
可配置最大fetch失败次数,对于长时间运行的服务,由于机器重启导致fetch失败的次数可能会显著增加,这里增加了一个可配置fetch失败的最大次数(4-20)从而使得任务更加鲁邦。
SPARK-13279
反应迟钝的driver,当添加一个task时driver会操作(O^2)次导致反应迟钝,导致job阻塞或者被Killed。当提交200k个tasks时,executor不能再注册由于driver被阻塞住,通过jstask观察锁在
TaskSchedulerImpl.submitTasks
上。
SPARK-13850
TimSort存在存在一处bug导致处理内存操作时导致curruption;
调节shuffle service使得可以处理更大量的连接
通过设置
spark.shuffle.io.serverThreads
和spark.shuffle.io.backLog
来处理在shuffle阶段executor的timeout情况;
SPARK-13958
发现host处理4个reduce任务时会发生OOM,发现了一处ShuffleExternal溢出内存时的bug;
性能提升
性能监控工具
- SparkUI
- jstack
- libperfagent for Java symbol生成火焰图