【问题标题】:Why is spark-submit job leaving a process running on cluster (EMR) master node?为什么 spark-submit 作业会留下在集群 (EMR) 主节点上运行的进程?
【发布时间】:2019-04-09 13:58:02
【问题描述】:

我正在通过 AWS lambda 函数向 Livy 提交 Spark 作业。作业运行到驱动程序的末尾,但没有关闭。

如果将 spark.stop() 或 sc.stop() 添加到驱动程序的末尾,则 spark 作业在 YARN 资源管理器上完成,并且 Livy 将报告成功。但是,在主节点上仍然有一个活跃的进程在运行,它需要大约 1.5Gb 的内存。如果提交了许多作业,这最终会使用并保存所有主节点内存。

工作:

  • 从配置单元表中提取记录

  • 在主节点上收集这些记录,然后使用 apache pdfbox 将它们写入 pdf 文件

  • 将生成的 PDF 上传到 S3

在集群上直接运行 spark-submit 会产生相同的结果,但是如果在 spark-submit 作业运行时我 ctrl+c ,则主节点上的进程将结束。

我们希望在驱动程序结束时自动完成这项工作。如果不是这样,则应在调用 spark.stop() 时调用关闭挂钩。

【问题讨论】:

  • 我确定您已经找到了解决方案或继续前进,但我遇到了类似的问题。在我的情况下,火花作业正在写入一个返回 java 未来的 aws 队列,并且在作业终止之前未来尚未完成(context.stop() 等),因此驱动程序挂起。一旦我改为阻塞调用,一切都按预期工作。希望这能给你一些线索

标签: apache-spark amazon-emr livy


【解决方案1】:

您是否尝试在 spark 配置上启用此标志? spark.yarn.submit.waitAppCompletion=false

我观察到的是 livy 执行 spark-submit 命令。上面的标志确保一旦纱线应用程序创建了一个应用程序ID,命令就完成了

【讨论】:

    猜你喜欢
    • 2021-05-18
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多