Facebook Spark 60TB Spark应用场景总结

可用性调优

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.serverThreadsspark.shuffle.io.backLog来处理在shuffle阶段executor的timeout情况;

SPARK-13958

发现host处理4个reduce任务时会发生OOM,发现了一处ShuffleExternal溢出内存时的bug;

性能提升

性能监控工具

  1. SparkUI
  2. jstack
  3. libperfagent for Java symbol生成火焰图

参考:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容