日志记录

编辑

elasticsearch-hadoop 使用 commons-logging 库,与 Hadoop 相同,用于其日志记录基础设施,因此它共享相同的配置方式。开箱即用,无需任何配置 - 默认情况下,elasticsearch-hadoop 会在 INFO 级别记录有关作业进度的相关信息。通常,无论您使用哪种集成(Map/Reduce、Hive),每个作业都会在控制台中打印至少一条消息,指示所使用的 elasticsearch-hadoop 版本。

16:13:01,946  INFO main util.Version - Elasticsearch Hadoop v2.0.0.BUILD-SNAPSHOT [f2c5c3e280]

配置 Hadoop(或 Hive)的日志记录不在本文档的范围内,但简而言之,在运行时,Hadoop 依赖 log4j 1.2 作为实际的日志记录实现。实际上,这意味着在作业类路径中的 log4j.properties 文件中添加感兴趣的包名称及其日志级别。elasticsearch-hadoop 提供了以下重要包

目的

org.elasticsearch.hadoop.hive

Apache Hive 集成

org.elasticsearch.hadoop.mr

Map/Reduce 功能

org.elasticsearch.hadoop.rest

REST/传输基础设施

org.elasticsearch.hadoop.serialization

序列化包

org.elasticsearch.spark

Apache Spark 包

默认的日志级别(INFO)适用于日常使用;如果需要进行故障排除,请考虑切换到 DEBUG,但请选择要包含的包。对于低级详细信息,请启用 TRACE 级别,但请记住,这将导致大量的日志数据,这影响您的作业性能和环境。

要将所有内容放在一起,如果您想在 Map/Reduce 包上启用 DEBUG 日志记录,请更改 log4j.properties(由您的环境使用)

log4j.category.org.elasticsearch.hadoop.mr=DEBUG

有关更多信息,请参阅 log4j javadoc

配置正在执行的 JVM 日志记录,而不是客户端

编辑

需要注意的一点是,在几乎所有情况下,都需要在正在执行的 JVM 中配置日志记录,即 Map/Reduce 任务实际运行的位置,而不是在客户端(作业组装或监视的位置)上配置。根据您的库、平台和版本,可以通过一些专用设置来完成此操作。特别是像 Hive 这样基于 Map/Reduce 的库可能难以配置,因为在运行时,它们会创建 Map/Reduce 任务来实际执行工作。因此,需要配置日志记录并将配置传递到 Map/Reduce 层才能进行日志记录。在这两种情况下,都可以通过 SET 命令来实现。特别是在使用 Hadoop 2.6 时,可以使用 mapreduce.job.log4j-properties-file 以及适当的 container-log4j.properties 文件。