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

时间:2015-09-02 10:31:36

标签: hadoop apache-spark mapreduce spark-streaming

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

获取此消息的原因是什么。

1 个答案:

答案 0 :(得分:5)

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

所以我的答案来自肖恩欧文的view types关于工人和遗嘱执行人之间的关系,以及来自answer的Cloudera博客以及Resource Management with YARN的官方文件。

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

Spark应用程序架构

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

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

Cluster mode overview

执行人员:

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

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

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

ExecutorState:

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

Worker: Executor app-20150902151146-0001/6 finished with state KILLED exitStatus 1

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

List<Foo>

意味着你的`app-20150902151146-0001已被一名停止并要求杀死遗嘱执行人的工人杀死。 (enter image description here