当前位置: 首页 > 知识库问答 >
问题:

Spark流作业在被驱动程序阻止后失败

薄龙光
2023-03-14

我有一个spark流媒体工作,它从Kafka读取数据并对其执行一些操作。我正在一个纱线集群Spark 1.4.1上运行该作业,该集群有两个节点,每个节点有16 GB RAM,每个节点有16芯。

我已将这些conf传递给spark提交作业:

--主纱线簇--num executors 3--驱动器内存4g--executor内存2g--executor cores 3

作业返回此错误并在运行一段时间后完成:

INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 11,
(reason: Max number of executor failures reached)

.....

ERROR scheduler.ReceiverTracker: Deregistered receiver for stream 0:
Stopped by driver

更新日期:

也发现了这些日志:

INFO yarn.YarnAllocator: Received 3 containers from YARN, launching executors on 3 of them.....

INFO yarn.ApplicationMaster$AMEndpoint: Driver terminated or disconnected! Shutting down.

....

INFO yarn.YarnAllocator: Received 2 containers from YARN, launching executors on 2 of them.

INFO yarn.ExecutorRunnable: Starting Executor Container.....

INFO yarn.ApplicationMaster$AMEndpoint: Driver terminated or disconnected! Shutting down...

INFO yarn.YarnAllocator: Completed container container_e10_1453801197604_0104_01_000006 (state: COMPLETE, exit status: 1)

INFO yarn.YarnAllocator: Container marked as failed: container_e10_1453801197604_0104_01_000006. Exit status: 1. Diagnostics: Exception from container-launch.
Container id: container_e10_1453801197604_0104_01_000006
Exit code: 1
Stack trace: ExitCodeException exitCode=1: 
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:576)
    at org.apache.hadoop.util.Shell.run(Shell.java:487)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:753)
    at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Container exited with a non-zero exit code 1

这可能是什么原因?感谢您的帮助。

谢谢

共有2个答案

公羊子真
2023-03-14

我也有同样的问题。我找到了一个解决方案,通过删除sparkContext来解决这个问题。stop()在主功能的末尾,将停止操作留给GC

Spark团队已经解决了Spark core中的问题,然而,到目前为止,修复只是主要分支。我们需要等待修复程序更新到新版本中。

https://issues.apache.org/jira/browse/SPARK-12009

辛盛
2023-03-14

您能展示一下您从kafka读取的scala/java代码吗?我怀疑您可能没有正确创建SparkConf。

尝试一些像

SparkConf sparkConf = new SparkConf().setAppName("ApplicationName");

还可以尝试在纱线客户端模式下运行应用程序并共享输出。

 类似资料:
  • 我正在尝试使用 启动 的会话 我一直收到这个错误: (未知错误:DevToolsActivePort文件不存在)(从chrome位置/usr/lib/chrumbrowser/chrum浏览器启动的进程不再运行,因此ChromeDriver假设chrome已崩溃。)(驱动程序信息:ChromeDriver=71.0.3578.98,平台=Linux 4.15.0-45-generic x86_64

  • 我希望使用Spark从大约1500个远程Oracle表中提取数据,并且希望有一个多线程应用程序,该应用程序每个线程提取一个表,或者每个线程提取10个表,并启动一个Spark作业以从各自的表中读取数据。 从spark的官方站点https://spark.apache.org/docs/latest/job-scheduling.html可以看出这是可行的... ...Spark运行的群集管理器提供了

  • Build.Gradle 分级。性质 例外情况: 代码: 有人知道怎么修吗?

  • 我正在提交一个pyspark作业,在客户机模式下使用spark提交。 这项工作成功完成,我可以在Spark历史记录以及纱线中验证这一点。即使在作业完成后,我仍然可以看到spark提交进程正在运行,并且不会终止。 我想从调用提交作业的调用程序中返回作业状态(Jenkins使用ssh插件发布)。有什么方法可以确保火花提交过程在完成作业后以正确的退出代码终止? 我尝试过停止火花上下文并将退出状态放在py

  • 尝试使用ZooKeeper和SparkDriver弹性实现SparkMaster的高可用性,使用GlusterFS中的元数据检查点。 null 驾驶员保持在停车状态。驱动程序错误日志- 我是否为Spark选择了正确的资源控制器,即Statefulsets of kubernetes?我对这个环境是新的,任何帮助都是非常值得赞赏的。

  • 我试着体验SmallRye Mutiny Vertx绑定,完整的示例代码可以在我的Github上找到。 当装配这样的路线时。 将阻止请求。