【发布时间】:2015-11-27 19:42:25
【问题描述】:
apache spark 独立设置中的所有工作人员都显示以下消息。 Worker:执行程序 app-20150902151146-0001/6 以状态 KILLED exitStatus 1 结束
收到此消息的原因是什么。
【问题讨论】:
-
请不要忘记接受答案以关闭问题!
标签: hadoop apache-spark mapreduce spark-streaming
apache spark 独立设置中的所有工作人员都显示以下消息。 Worker:执行程序 app-20150902151146-0001/6 以状态 KILLED exitStatus 1 结束
收到此消息的原因是什么。
【问题讨论】:
标签: hadoop apache-spark mapreduce spark-streaming
由于您提供的信息很少,我们只能笼统地回答这个问题。
所以我的回答灵感来自 Sean Owen 的 answer 关于工人和执行者之间的关系,也来自 Resource Management with YARN 上的 Cloudera 博客以及 Cluster mode overview 上的官方文档。
让我们从定义 Apache Spark 应用程序架构开始:
Spark 应用架构
对于熟悉 Apache Spark API 的人来说,一个应用程序对应于 SparkContext 类的一个实例。应用程序可用于单个批处理作业、多个作业间隔开的交互式会话,或持续满足请求的长期服务器。 与 MapReduce 不同的是,应用程序将具有称为 Executors 的进程,即使它没有运行任何作业,它们也会代表它在集群上运行。
这种方法可以将数据存储在内存中以实现快速访问,以及闪电般快速的任务启动时间。
执行者:
MapReduce 在自己的进程中运行每个任务。当一个任务完成时,这个过程就消失了。在 Spark 中,许多任务可以在单个进程中同时运行,并且该进程会在 Spark 应用程序的整个生命周期内持续存在,即使没有任何作业正在运行。
如上所述,此模型的优势在于速度:任务可以非常快速地启动并处理内存中的数据。缺点是粗粒度的资源管理。由于应用程序的执行程序数量是固定的,并且每个执行程序都有固定的资源分配,因此应用程序在其运行的整个持续时间内占用相同数量的资源。 (当 YARN 支持容器大小调整时,我们计划在 Spark 中利用它来动态获取和回馈资源。)
既然我们已经定义了什么是执行器,让我们定义执行器状态
执行者状态:
执行者可以处于以下状态之一:
LAUNCHING, LOADING, RUNNING, KILLED, FAILED, LOST, EXITED
最后四个状态描述了一个已完成的工作,出于多种原因之一,出现以下错误:
Worker: Executor app-20150902151146-0001/6 finished with state KILLED exitStatus 1
表示您的 `app-20150902151146-0001̀ 已被一名 Worker 杀死,该 Worker 停下来并要求杀死 executor。 (code Ref.)
【讨论】: