确定 spark 程序在哪里失败?

Determine where spark program is failing?

有没有办法在集群模式下调试 运行 的 Spark 应用程序?我有一个已经 运行 成功了一段时间的程序,它一次处理几百 GB。最近我有一些数据导致 运行 由于执行者断开连接而失败。根据我的阅读,这可能是内存问题。我正在尝试确定是什么 function/action 导致内存问题触发。我在 EMR 集群(使用 YARN)上使用 Spark,调试此问题的最佳方法是什么?

对于 cluster mode 你可以去 YARN 资源管理器 UI 和 select 跟踪 UI 用于您的特定 运行 应用程序(指向 Application Master 上的 spark driver 运行 YARN 节点管理器) 打开 Spark UI 这是调试 spark 应用程序的核心开发人员界面。

对于 client mode 你也可以像前面提到的那样去 YARN RM UI 以及点击 Spark UI 通过此地址 => http://[driverHostname]:4040 其中 driverHostNameEMR 中的主节点,4040 是默认端口(这可以是改变了)。

此外,您可以通过 Spark History Server 通过此默认地址访问已提交和已完成的 Spark 应用程序 => http://master-public-dns-name:18080/

这些是基本资源,Spark UI 是满足您请求的主要工具包。

https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html

https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-webui.html