'yarn application-list'不显示任何结果

k97glaaz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(542)

我在一个Yarn簇上运行了一些spark应用程序。应用程序显示在yarn ui的“所有应用程序”页面中http://host:8088/集群,但 yarn application -list 命令没有给出任何结果。这可能是什么原因?

rbpvctlc

rbpvctlc1#

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

tf7tbtn2

tf7tbtn22#

如果使用“-list”选项而不使用“-apptypes”或“-appstates”选项,则会对“application types”和“states”应用默认筛选(请检查下面突出显示的部分)。如果没有任何应用程序与默认筛选匹配,则不会得到任何结果。
应用程序总数(应用程序类型:[]和状态:[已提交、已接受、正在运行]):0
如果您看到“-list”的帮助,它会说明以下内容:
“列出应用程序。支持可选使用-apptypes根据应用程序类型筛选应用程序,以及-appstates根据应用程序状态筛选应用程序”。
这似乎有点误导。
如果不指定“-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);
      }
    }

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

根据上述代码,应用以下逻辑:
调用“Yarn应用程序-列表”:显示所有处于“已提交”、“已接受”和“正在运行”状态的应用程序,例如,for me输出低于(默认状态下没有应用程序)
cmd>Yarn应用-列表
应用程序总数(应用程序类型:[]和状态:[已提交、已接受、正在运行]):0
call“yarn application-list-appstates all”:显示所有应用程序(在任何状态下),例如for me输出如下(总共有268个应用程序,同时检查应用于“states”的过滤条件):
cmd>Yarn应用-列表-应用状态所有
所有应用程序总数(应用程序类型:[]和状态:[新建、新建保存、已提交、已接受、正在运行、已完成、已失败、已终止]):268
call“yarn application-list-appstates finished”:显示所有应用程序(处于finished状态),例如for me输出如下(有136个应用程序处于finished状态):
cmd>Yarn应用-列表-应用状态完成
应用程序总数(应用程序类型:[]和状态:[已完成]):136

相关问题