【问题标题】:YARN API: Getting Yarn Aggregated Logs for application by APIYARN API:通过 API 获取应用程序的 Yarn 聚合日志
【发布时间】:2020-06-25 20:46:46
【问题描述】:

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

当然可以通过简单的 cmd 来完成:“yarn logs -applicationId {my_application_ID}”,但我想通过 API 来完成。

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

谢谢。

【问题讨论】:

    标签: api hadoop logging hadoop-yarn


    【解决方案1】:

    正如您在代码源 https://github.com/apache/hadoop/blob/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java 上所看到的,这并非易事,很明显,YARN API 中缺少日志 API

    通过 API (https://hadoop.apache.org/docs/r2.7.4/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Application_API)

    curl http://yarn.infra/ws/v1/cluster/apps/application_1502112083252_1001
    
    ...
    <amContainerLogs>
    http://node-1.infra:8042/node/containerlogs/container_e41_1502112083252_1001_01_000001/hdfs
    </amContainerLogs>
    ...
    

    应用程序尝试(如果对您有用):

    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>
    ..
    

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

    【讨论】:

      【解决方案2】:

      据我所知,YARN 将日志写入文件系统,可能是 HDFS(在我的情况下为:hdfs:hadoopsrv:9000/var/log/hadoop/app-logs/),对这些文件具有访问权限的用户可以直接获取它们。据我了解,yarn logs -applicationId 只是从那里获取它们。

      【讨论】:

        【解决方案3】:

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

        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);
                }
              }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-05
          • 2014-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-08
          • 2023-01-26
          相关资源
          最近更新 更多