'yarn application -list' 没有显示任何结果

'yarn application -list' doesnt show any results

我在 YARN 集群上有 运行 一些 Spark 应用程序。该应用程序显示在 YARN UI http://host:8088/cluster 的 "All applications" 页面中,但 yarn application -list 命令没有给出任何结果。这可能是什么原因?

当您使用不带“-appTypes”或“-appStates”选项的“-list”选项时,它将对 "application-types" 和 "states" 应用默认过滤(请查看下面突出显示的部分)。如果您的 none 个应用程序符合默认过滤条件,那么您将不会得到任何结果。

申请总数(申请类型:[] 和状态:[已提交,已接受,运行]):0

如果您看到“-list”的帮助,它说明如下:

"List applications. Supports optional use of -appTypes to filter applications based on application type, and -appStates to filter applications based on application state"。

这似乎有点误导。

如果您不指定“-appStates”,默认情况下它采用 "SUBMITTED"、"ACCEPTED" 和 "RUNNING" 状态进行过滤。请从 "org.apache.hadoop.yarn.client.cli.ApplicationCLI.java" 的 "listApplications()" 方法检查下面的代码。

private void listApplications()
{
    ............

    if (allAppStates) {
      for (YarnApplicationState appState : YarnApplicationState.values()) {
        appStates.add(appState);
      }
    } else {
      if (appStates.isEmpty()) {
        appStates.add(YarnApplicationState.RUNNING);
        appStates.add(YarnApplicationState.ACCEPTED);
        appStates.add(YarnApplicationState.SUBMITTED);
      }
    }

    ............
}

根据上面的代码,应用了以下逻辑:

  1. 调用"yarn application -list":显示状态为"SUBMITTED"、"ACCEPTED"和"RUNNING"的所有应用程序 例如对我来说输出如下(默认状态下有零个应用程序)

CMD>纱线应用-列表

申请总数(申请类型:[] 和状态:[已提交,已接受,运行]):0

  1. 呼叫"yarn application -list -appStates ALL": 显示所有应用程序(任何状态) 例如对我来说,输出如下(总共有 268 个应用程序,还要检查应用于 "states" 的过滤条件):

CMD> yarn application -list -appStates ALL

ALL 应用程序总数(应用程序类型:[] 和 状态:[NEW,NEW_SAVING , 已提交,已接受,运行,已完成,已失败,已终止]):268

  1. 调用"yarn application -list -appStates FINISHED": 显示所有应用程序(处于FINISHED状态) 例如对我来说,输出如下(有 136 个应用程序处于完成状态):

CMD> yarn application -list -appStates FINISHED

申请总数(申请类型:[] 和 状态:[FINISHED]):136

事实证明,我在 YARN 中启用了日志聚合,但将 yarn.nodemanager.remote-app-log-dir 设置为自定义 hdfs 目录(/tmp/yarnlogs),因此日志实际上在 HDFS 中的 /tmp/yarnlogs 处聚合,但 yarn 命令仍在 HDFS 上的默认位置 (/tmp/logs) 搜索日志。因此,将 属性 更改为其默认值已为我修复。

注意: 如果日志聚合目录配置错误,在尝试从 Web UI 访问作业历史记录时也会导致错误,看起来像:
Log aggregation has not completed or is not enabled