日志记录
编辑日志记录
编辑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 提供以下重要的包:
包 | 用途 |
---|---|
|
Apache Hive 集成 |
|
Map/Reduce 功能 |
|
REST/传输基础结构 |
|
序列化包 |
|
Apache Spark 包 |
默认日志记录级别 (INFO
) 适用于日常使用;如果需要进行故障排除,请考虑切换到 DEBUG
,但要选择性地包含包。对于底层详细信息,请启用 TRACE
级别,但请记住,这将导致大量的日志数据,这 会 影响您的作业性能和环境。
总而言之,如果您想在 Map/Reduce 包上启用 DEBUG
日志记录,请更改 log4j.properties
文件(由您的环境使用)。
log4j.category.org.elasticsearch.hadoop.mr=DEBUG
有关更多信息,请参阅 log4j 的 javadoc。
配置正在执行的 JVM 日志记录,而不是客户端
编辑需要注意的是,在几乎所有情况下,都需要在正在执行的 JVM 中配置日志记录,即 Map/Reduce 任务实际运行的地方,而不是在客户端(作业在此处组装或监控)上。根据您的库、平台和版本,这可以通过一些专用设置来完成。特别是基于 Map/Reduce 的库(如 Hive)可能难以配置,因为它们在运行时会创建 Map/Reduce 任务来实际执行工作。因此,需要配置日志记录并将配置传递到 Map/Reduce 层才能进行日志记录。在这两种情况下,都可以通过 SET
命令实现。特别是当使用 Hadoop 2.6 时,可以使用 mapreduce.job.log4j-properties-file
以及相应的 container-log4j.properties
文件。