我正在运行一个Spark结构化流应用程序。我已经分配10 GB的驱动程序。该程序运行8小时,然后它给予如下错误。执行器完成任务,并发送结果给驱动程序,然后驱动程序命令关闭为什么??驱动程序需要多少内存?
2018年4月20日19:25:24信息粗粒度执行程序后端:获得分配任务489524 2018年4月20日19:25:24信息执行人:在阶段477.0中运行任务1000.0(TID 489524)20/04/18 19:25:25信息执行程序:已完成阶段477.0中的任务938.0(TID 489492)。4153字节结果已发送至驱动程序20/04/18 19:25:25信息执行器:已完成阶段477.0中的任务953.0(TID 489499)。3687字节结果已发送至驱动程序20/04/18 19:25:28信息执行器:已完成阶段477.0中的任务1000.0(TID 489524)。3898字节结果已发送到驱动程序20/04/18 19:25:29信息CoarseGrainedExecutorBackend:驾驶员命令关机20/04/18 19:25:29信息存储器:内存存储已清除2018年4月20日19:25:29信息块管理器:块管理器已停止2018年4月20日19:25:29信息关闭挂接管理器:已调用关闭挂接
1条答案
按热度按时间lsmepo6l1#
驱动程序没有特定的内存限制。驱动程序最多可以占用40 GB的内存,超过这个内存,JVM GC会导致它变慢。
在您的示例中,驱动程序似乎被所有执行器发送给它的结果淹没了。
您可以尝试的方法不多
1.请确保驱动程序中没有
collect
操作。这肯定会导致驱动程序崩溃。1.尝试增加更多的驱动程序内存,可能是18G。
1.将
spark.yarn.driver.memoryOverhead
增加到2G:这是要为每个驱动程序分配的堆外内存量(以MB为单位)。