事实证明,我在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
2条答案
按热度按时间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
tf7tbtn22#
如果使用“-list”选项而不使用“-apptypes”或“-appstates”选项,则会对“application types”和“states”应用默认筛选(请检查下面突出显示的部分)。如果没有任何应用程序与默认筛选匹配,则不会得到任何结果。
应用程序总数(应用程序类型:[]和状态:[已提交、已接受、正在运行]):0
如果您看到“-list”的帮助,它会说明以下内容:
“列出应用程序。支持可选使用-apptypes根据应用程序类型筛选应用程序,以及-appstates根据应用程序状态筛选应用程序”。
这似乎有点误导。
如果不指定“-appstates”,则默认情况下,它将状态设置为“submitted”、“accepted”和“running”以进行筛选。请从“org.apache.hadoop.yarn.client.cli.applicationcli.java”的“listapplications()”方法中检查以下代码。
根据上述代码,应用以下逻辑:
调用“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