java - 从 Spark Java 应用程序登录 Azure

标签 java azure logging log4j2 azure-hdinsight

我们正在尝试在 Azure HDInsight Linux 集群中开发 Spark Java 应用程序。我们已经能够通过 Livy 提交申请,并且运行良好。

我们面临的问题与日志记录有关。这里我们如何使用log4j,因为如果我们使用RollingFileAppender,那么我们必须放置输出.log文件的路径。在我们的例子中,我们必须将日志写入 blob 存储中。但我们认为正常的日志记录不起作用。

我们发现 Azure 本身通过 Azureinsights 提供了一些日志记录机制,但我猜它们都是为 Web 项目制作的,并且无法在我们的 java 应用程序中工作。

请您帮助我如何从 Spark Java 应用程序实现应用程序日志记录?将来组织中的人员可能会考虑使用类似 Splunk 的工具来处理日志。

期待您的帮助。

谢谢, 沙米克.

最佳答案

根据我的理解,我认为你想将日志写入Blob存储或基于Blob存储的HDFS中。

所以对于登录blob存储的容器,我的建议是可以尝试使用log4j的第三方appender,比如AzureLogAppender 。或者登录表存储的另一种方法是使用这些 log4j 的附加程序,例如 log4j-azureazure-log4j .

如果要将日志写入Azure上的HDFS,有以下两种方法。

  1. 您可以引用article为 log4j 编写自定义附加程序。
  2. 使用Apache Flume appender for Log4j将日志发送到Flume并写入HDFS,可以引用blog了解如何将 Flume 与 Azure HDInsight 结合使用。

关于java - 从 Spark Java 应用程序登录 Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38860298/

相关文章:

c# - Mono 上的 Azure TimerManager 的类型初始值设定项引发异常

c# - 如何查看 Azure 上的应用程序日志记录

Azure - 2x 超小型实例或单个小型实例

linux - 如何更改/自定义/var/log/messages 、/var/log/secure 等中的日志格式

java - 目标无法到达, 'null' 以 JSF 形式返回 null

java - 在 UDP 上发送和接收序列化对象

java - 带有 Maven 的 Axis2

java - 使用 Xstream 是可能的序列化方法吗?

python - 完整的日志管理(python)

java - 多平台分布式日志聚合工具