我在一台250GB或内存和40个内核以及几个TB或硬盘空间的计算机上运行独立群集。
我正在初始化一个由8个执行器组成的集群,每个执行器有5个内核和28GB内存。
我正在阅读数据,我的持久性策略是MEMORY_AND_DISK。
我正在阅读镶木地板文件,处理它们,并生成一个DataFrame,然后将其传递给管道以提取特征并训练随机森林分类器。
在生成DataFrame时,我正在丢失执行程序,但我无法找到原因。
我看到以下错误:
16/12/15 11:07:30 ERROR TaskSchedulerImpl: Lost executor 3 on XXXX: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages.
16/12/15 11:07:30 WARN TaskSetManager: Lost task 172.0 in stage 171.0 (TID 7757, XXXX): ExecutorLostFailure (executor 3 exited caused by one of the running tasks) Reason: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages.
我已经在Spark UI上查看了执行程序的stderr日志,但我无法发现任何内容(启用了INFO日志记录级别),只有INFO消息没有任何WARN或ERROR。
我监视执行程序上的可用内存(再次使用Spark UI),在执行程序退出之前仍有可用内存,并且有足够的可用磁盘空间。
答案 0 :(得分:5)
如果你有8个执行器,其中指定了28g内存,每个其他所有内容只有26g,不同的开销加起来很快就完全有可能这个太少而且执行器因占用内存而被杀死。
尝试使用每个执行器20g之类的东西,或者只是使用值。你还在失去遗嘱执行人吗?