hadoop - 为什么 Apache Spark worker executor 以退出状态 1 被杀死?

标签 hadoop apache-spark mapreduce spark-streaming

apache spark 独立设置中的所有工作人员都显示以下消息。 worker :执行者 app-20150902151146-0001/6 已完成,状态为 KILLED exitStatus 1

收到此消息的原因是什么。

最佳答案

根据您提供的少量信息,我们只能笼统地回答这个问题。

所以我的回答是从 Sean Owen 的 answer 得到的启发。关于 worker 和执行者之间的关系,也来自 Resource Management with YARN 上的 Cloudera 博客以及关于 Cluster mode overview 的官方文档.

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

Spark 应用架构

对于熟悉 Apache Spark API 的人来说,一个应用程序对应于 SparkContext 类的一个实例。一个应用程序可以用于单个批处理作业、多个作业间隔开的交互式 session ,或者一个持续满足请求的长期服务器。 与 MapReduce 不同,应用程序将拥有称为Executors 的进程,即使它没有运行任何作业 也代表它在集群上运行。

这种方法可以将数据存储在内存中以实现快速访问,以及闪电般快速的任务启动时间。

enter image description here

执行者:

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 杀死。 ( code Ref. )

关于hadoop - 为什么 Apache Spark worker executor 以退出状态 1 被杀死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32350772/

相关文章:

hadoop - spark 是否有可能同时读取 HDFS 数据和进行一些计算?

Scala Spark 包含与不包含

scala - 在 Spark 中创建数据帧时出错

hadoop - 为什么现实世界中的MapReduce作业往往具有非常小的数据集大小?

java - Hadoop Java : how to specify map key as one of the index of input split?

rest - 如何通过负载均衡在 HBase 集群上使用 REST api

python - 如何使用 mrjob 迭代处理一个目录下的所有文件

python - 在本地测试 mapreduce 流作业的更优雅的方法?

hadoop - 如何在协调器中将当前月、日或年设置为工作流参数(在 Hue 上)

hadoop - Spark 处理小文件(合并与 CombineFileInputFormat)