SPARK独立集群:执行器退出,如何跟踪错误源?

Ram*_*ami 3 apache-spark

我在一台250GB或内存和40个内核以及几TB或硬盘空间的计算机上运行一个独立群集。

我正在初始化一个由8个执行程序组成的群集,每个执行程序具有5个核心和28GB的内存。

我正在读取数据,我的持久性策略是MEMORY_AND_DISK。

我正在读取实木复合地板文件,对其进行处理,并生成一个DataFrame,然后将其传递到管道以提取特征并训练Random Forest分类器。

在生成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.
Run Code Online (Sandbox Code Playgroud)

我已经在Spark UI上查看了执行程序的stderr日志,但是我什么也没发现(启用了INFO日志记录级别),只有INFO消息没有任何警告或错误。

我监视执行程序上的可用内存(再次使用Spark UI),在执行程序退出之前,仍然有可用内存,并且有大量可用磁盘空间。

  • 如何跟踪此问题?
  • 遗嘱执行人退出的原因是什么?

oh5*_*h54 5

如果您指定了8个执行器,每个执行器具有28g内存,那么其他所有东西都只有26g,那么不同的开销很快就会加起来,这很可能太少了,执行器由于占用内存而被杀死。

尝试使用每个执行器20g之类的东西,或者只是一般地使用这些值。您还在失去执行者吗?