我在YARN群集上运行了一些Spark应用程序。该应用程序显示在YARN用户界面http://host:8088/cluster的“所有应用程序”页面中,但 yarn application -list
命令不会给出任何结果。可能是什么原因造成的?
答案 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);
}
}
............
}
根据上面的代码,应用以下逻辑:
CMD>纱线应用 - 列表
申请总数(申请类型:[]和州:[提交,接受,运行]):0
CMD> yarn application -list -appStates ALL
ALL应用程序总数(应用程序类型:[]和状态:[NEW,NEW_SAVING ,提交,接受,跑步,完成,失败,被杀]):268
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
强>