由于Timeout waiting for task异常导致Shuffle FetchFailed
问题
使用JDBCServer模式执行100T的TPCDS测试套,出现Timeout waiting for task异常导致Shuffle FetchFailed,Stage一直重试,任务无法正常完成。
回答
JDBCServer方式使用了ShuffleService功能,Reduce阶段所有的Executor会从NodeManager中获取数据,当数据量达到一个级别(10T级别),会出现NodeManager单点瓶颈(ShuffleService服务在NodeManager进程中),就会出现某些Task获取数据超时,从而出现该问题。
因此,当数据量达到10T级别以上的Spark任务,建议用户关闭ShuffleService功能,即在“Spark-defaults.conf”配置文件中将配置项“spark.shuffle.service.enabled”配置为“false”。