为什么Apache Spark工作执行程序被退出状态1终止?

Jes*_*ith 2 hadoop mapreduce apache-spark spark-streaming

apache spark独立设置中的所有工作人员都显示以下消息.工人:执行人app-20150902151146-0001/6以州KILLED exitStatus 1结束

得到这条消息的原因是什么?

eli*_*sah 5

由于您提供的信息很少,我们只能广泛回答这个问题.

所以我的答案来自Sean Owen 关于工人和执行者之间关系的答案,以及来自Cloudera 资源管理博客和YARN以及关于集群模式概述的官方文档.

那么让我们从定义Apache Spark应用程序架构开始:

Spark应用程序架构

对于熟悉Apache Spark API的人,应用程序对应于SparkContext该类的实例.应用程序可用于单个批处理作业,具有间隔开的多个作业的交互式会话,或者长期服务器不断满足请求.与MapReduce不同,即使应用程序没有运行任何作业,应用程序也会在集群上运行名为Executors的进程.

这种方法可以在内存中进行数据存储,以便快速访问,以及快速的任务启动时间.

在此输入图像描述

执行人员:

MapReduce在自己的进程中运行每个任务.任务完成后,该过程就会消失.在Spark中,许多任务可以在一个进程中并发运行,并且即使没有正在运行的作业,此进程也会在Spark应用程序的生命周期内保持不变.

如上所述,此模型的优点是速度:任务可以非常快速地启动并处理内存中的数据.缺点是粗粒度的资源管理.由于应用程序的执行程序数量是固定的,并且每个执行程序都有固定的资源分配,因此应用程序在其运行的整个持续时间内占用相同数量的资源.(当YARN支持容器调整大小时,我们计划在Spark中利用它来动态获取和回馈资源.)

现在我们已经定义了什么是Executor,让我们定义Executor状态

ExecutorState:

执行程序可以处于以下状态之一:

LAUNCHING, LOADING, RUNNING, KILLED, FAILED, LOST, EXITED
Run Code Online (Sandbox Code Playgroud)

最后四个状态描述了已完成的作业,并且出于多种原因之一,出现以下错误:

Worker: Executor app-20150902151146-0001/6 finished with state KILLED exitStatus 1
Run Code Online (Sandbox Code Playgroud)

意味着你的'app-20150902151146-0001已被一名停止并要求杀死遗嘱执行人的工人杀死.(代码参考)