纱线API:通过API获取纱线聚合日志以供应用

纱线API:通过API获取纱线聚合日志以供应用,api,hadoop,logging,yarn,Api,Hadoop,Logging,Yarn,我使用java API提交Hadoop应用程序,而不是在终端中提交。 我在寻找一种方法,在应用程序完成后通过纱线API获取纱线聚合日志 当然,这可以通过简单的cmd实现:“纱线日志-applicationId{my_application_ID}”,但我想通过API实现 有人知道如何使用API而不是命令行访问这些日志吗 谢谢 据我所知,Thread将日志写入一个文件系统,可能是HDFS(在我的例子中:HDFS:hadoopsrv:9000/var/log/hadoop/app logs/),拥有

我使用java API提交Hadoop应用程序,而不是在终端中提交。 我在寻找一种方法,在应用程序完成后通过纱线API获取纱线聚合日志

当然,这可以通过简单的cmd实现:“纱线日志-applicationId{my_application_ID}”,但我想通过API实现

有人知道如何使用API而不是命令行访问这些日志吗


谢谢

据我所知,Thread将日志写入一个文件系统,可能是HDFS(在我的例子中:
HDFS:hadoopsrv:9000/var/log/hadoop/app logs/
),拥有这些文件访问权限的用户可以直接获取它们。据我所知,
纱线日志-applicationId
只是从那里获取它们。

正如您在代码源代码中所能看到的,这不是一件小事,很明显,纱线API中缺少一个日志API

通过API()

curlhttp://yarn.infra/ws/v1/cluster/apps/application_1502112083252_1001
...
http://node-1.infra:8042/node/containerlogs/container_e41_1502112083252_1001_01_000001/hdfs
...
以及应用程序尝试(如果对您有用):

curlhttp://yarn.infra/ws/v1/cluster/apps/application_1502112083252_1001/appattempts
..
http://node-3.infra:8042/node/containerlogs/container_e41_1502112083252_1001_01_000001/hdfs
..

让我们重新卷曲这些链接,这将允许您下载本地日志。但是这不是完整的日志(我没有找到确切的获取方法,如果找到了,请随时填写我的答案)。

收集日志的一种方法是在Java代码中调用LogsCLI.main()。 此调用将应用程序日志输出到stdout

import org.apache.hadoop.yarn.client.cli.LogsCLI;

      private void collectLogs()
      {
          String[] args = {"-applicationId", appId.toString()};
          try {
            LogsCLI.main(args);
        } catch (Exception e) {
            LOG.warn("Error when collecting Yarn Application logs");
            LOG.debug(e);
        }
      }
curl http://yarn.infra/ws/v1/cluster/apps/application_1502112083252_1001/appattempts

..
<logsLink>
http://node-3.infra:8042/node/containerlogs/container_e41_1502112083252_1001_01_000001/hdfs
</logsLink>
..
import org.apache.hadoop.yarn.client.cli.LogsCLI;

      private void collectLogs()
      {
          String[] args = {"-applicationId", appId.toString()};
          try {
            LogsCLI.main(args);
        } catch (Exception e) {
            LOG.warn("Error when collecting Yarn Application logs");
            LOG.debug(e);
        }
      }