如何使用java以编程方式检索yarn的日志

Tre*_*emo 5 java hadoop hadoop-yarn apache-spark

实际上,我使用以下命令在 Linux shell 上检索 Spark 应用程序的日志:

yarn logs -applicationId applicationid

有什么方法可以使用 java 以编程方式检索它吗?

Tre*_*emo 5

我想使用java以编程方式完成它,所以我最后看了一下命令背后的代码:

yarn logs -applicationId applicationid
Run Code Online (Sandbox Code Playgroud)

位于:

src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
Run Code Online (Sandbox Code Playgroud)

我现在检索字符串(内容)中的日志。代码是:

String applicationId = "application_1492795815045_3940";
ApplicationId appId = appId = ConverterUtils.toApplicationId(applicationId);
LogCLIHelpers logCliHelper = new LogCLIHelpers();
Configuration config = new Configuration();
logCliHelper.setConf(config);
String appOwner = UserGroupInformation.getCurrentUser().getShortUserName();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
// Function to retrieve logs
logCliHelper.dumpAllContainersLogs(appId, appOwner, ps);
String content = new String(baos.toByteArray(), StandardCharsets.UTF_8);
System.out.println(content)
Run Code Online (Sandbox Code Playgroud)


Pau*_*ack 3

是的你可以。您可以通过YarnClient获取有关应用程序的大部分关键信息,并且可以对Spark History Server API进行剩余调用。您在这里寻找的端点是

/applications/[base-app-id]/logs
Run Code Online (Sandbox Code Playgroud)