【问题标题】:How to get Log Aggregation in code by yarnClient如何通过 yarnClient 在代码中获取日志聚合
【发布时间】:2020-07-21 13:10:46
【问题描述】:

我正在关注这个关于通过 java API 创建 YarnApp 的示例。

https://github.com/hortonworks/simple-yarn-app

工作正常,但是,日志只存在执行,之后日志就消失了。

我如何通过代码捕捉到这一点?或者启用一个选项?

【问题讨论】:

  • 你能解释一下你的集群设置并发布jps的输出吗?
  • 我正在使用分发 cloudera 6.3.1。我不是管理员环境,但我在所有 nodemanager 中检查了日志在 /data01/yarn/container-logs/
  • 检查JobHistoryServer是否正在运行?
  • 是的,ResourceManager 和 JobHistoryServer 在同一台机器上。
  • 您可以访问 JobHistoryServer 用户界面吗?你能看到那里的应用程序日志吗?或者试试yarn logs -applicationId <appID>

标签: java hadoop hadoop-yarn


【解决方案1】:

您可以在应用程序完成后使用 LogCliHelpers 按应用程序 ID 查找日志:

import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.client.api.YarnClientApplication;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.hadoop.yarn.logaggregation.LogCLIHelpers;

import java.io.IOException;
import java.io.PrintStream;

public static void getLogs(YarnConfiguration conf, YarnClientApplication app) throws IOException, YarnException {
    ApplicationSubmissionContext appContext =
            app.getApplicationSubmissionContext();
    ApplicationId appId = appContext.getApplicationId();
    LogCLIHelpers logCLIHelpers = new LogCLIHelpers();
    logCLIHelpers.setConf(conf);
    FileSystem fs = FileSystem.get(conf);
    Path logFile = new Path("/path/to/log/file.log");
    fs.create(logFile, false);
    try (PrintStream printStream = new PrintStream(logFile.toString())) {
      logCLIHelpers.dumpAllContainersLogs(appId, UserGroupInformation.getCurrentUser().getShortUserName(), printStream);
    }
}

【讨论】:

  • Tks Boris 为您解答。我正在使用 API 版本 3.0.0。这门课变化很大。实际上它是 logCLIHelpers.dumpAllContainersLogs(ContainerLogsRequest arg0)。将日志写入hdfs时我不明白。
  • @Alan 抱歉,我现在无法更新我的代码,是的,它使用的是 API 2.2.0。也许你可以在这里找到答案:stackoverflow.com/questions/23058663/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
  • 2021-12-30
  • 1970-01-01
  • 2017-02-05
相关资源
最近更新 更多