【问题标题】:How can I tell if my spark job is progressing?如何判断我的 Spark 工作是否正在进行?
【发布时间】:2017-04-01 02:27:54
【问题描述】:

我有一个在 YARN 上运行的 spark 作业,它似乎只是挂起,没有进行任何计算。

当我yarn application -status <APPLICATIOM ID> 时,纱线是这样说的:

Application Report : 
Application-Id : applicationID
Application-Name : test app
Application-Type : SPARK
User : ec2-user
Queue : default
Start-Time : 1491005660004
Finish-Time : 0
Progress : 10%
State : RUNNING
Final-State : UNDEFINED
Tracking-URL : http://<ip>:4040
RPC Port : 0
AM Host : <host ip>
Aggregate Resource Allocation : 36343926 MB-seconds, 9818 vcore-seconds
Log Aggregation Status : NOT_START
Diagnostics : 

而且,当我检查yarn application -list 时,它说它是RUNNING。但我不确定我是否相信这一点。当我转到 spark webUI 时,我在运行它的整个几个小时内只看到一个阶段:

此外,当我单击“阶段”选项卡时,我看不到任何运行:

如何确保我的应用程序确实在运行并且YARN 没有对我撒谎?

实际上,我更希望这会引发错误,而不是让我等待查看作业是否正在实际运行。我该怎么做?

【问题讨论】:

    标签: apache-spark pyspark hadoop-yarn


    【解决方案1】:

    在 Spark 应用程序 UI 上

    如果您单击链接:“Nativexxxx 的镶木地板”,它将显示运行阶段的详细信息。

    在那个屏幕上会有一个“输入大小/记录”列。如果您的工作正在进行中,该列中显示的数字会发生变化。

    它基本上描述了您的执行程序读取的记录数。

    【讨论】:

    • 嗯。我不明白。这是否意味着它没有进展?
    • 我们可以借此聊聊吗?
    • @Candic3 满意请采纳。
    【解决方案2】:

    如果您转到 Spark UI 并搜索“executors”选项卡。在那里,您将拥有正在运行您的工作的执行者列表,在执行者 ID 和地址旁边,您将拥有“日志”列,在那里您将拥有“stdout”和“stderr”选项卡。单击标准输出,您可以在其中查看作业运行时写入容器的日志。

    【讨论】:

    • 但是仅仅因为正在写入日志 - 这是否一定意味着工作正在进行中?日志可能会写 waiting for sufficient resources 之类的东西,对吧?
    • @Candic3 是的,你是对的。但这是跟踪日志的最佳方式,您还可以查看与 YARN 及其资源相关的所有信息。
    • @Candic3 似乎您的纱线集群中没有足够的资源。
    • @Kaushal 你能帮我确定我需要什么样的资源才能做到这一点吗?
    【解决方案3】:

    YARN 表示它正在运行,因为应用程序尚未退出或被终止。 不知道是不是卡住了。在您的情况下,您可以在 yarn-client 模式下运行 Spark 作业,并查看应该表明它是否真的在运行的日志。

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      相关资源
      最近更新 更多