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

时间:2015-09-29 06:03:54

标签: hadoop apache-spark yarn

我在YARN群集上运行了一些Spark应用程序。该应用程序显示在YARN用户界面http://host:8088/cluster的“所有应用程序”页面中,但 yarn application -list 命令不会给出任何结果。可能是什么原因造成的?

2 个答案:

答案 0 :(得分:11)

当你使用" -list"选项没有" -appTypes"或" -appStates"选项,它适用于"应用程序类型"的默认过滤。和"州" (查看下面突出显示的部分)。如果您的应用程序都没有与默认过滤匹配,那么您将无法获得任何结果。

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

如果您看到" -list"的帮助,则说明以下内容:

"列出应用程序。 支持可选地使用-appTypes根据应用程序类型过滤应用程序,并使用-appStates根据应用程序状态过滤应用程序"。

这似乎有点误导。

如果您没有指定" -appStates",默认情况下会将状态视为"提交"," ACCEPTED"和" RUNNING",用于过滤。请检查以下代码" listApplications()" " org.apache.hadoop.yarn.client.cli.ApplicationCLI.java"的方法。

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. Call" yarn application -list":显示状态中的所有应用程序" SUBMITTED"," ACCEPTED"和"跑步" 对于例如对我来说输出低于(默认状态下有零应用程序)
  2. CMD>纱线应用 - 列表

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

    1. 调用"纱线应用程序-list -appStates ALL":显示所有应用程序(在任何状态下) 对于例如对我来说输出如下(共有268个应用程序,还检查应用于"状态"的过滤标准):
    2. CMD> yarn application -list -appStates ALL

      ALL应用程序总数(应用程序类型:[]和状态:[NEW,NEW_SAVING ,提交,接受,跑步,完成,失败,被杀]):268

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

        申请总数(申请类型:[]和州:[已完成]):136

答案 1 :(得分:0)

事实证明我已在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