hadoop - hadoop的日志记录框架

标签 hadoop logging log4j hdfs apache-commons-logging

我必须在一个日志记录框架上工作,该框架将捕获hadoop作业的日志,该作业将从hdfs加载数据,处理数据,将处理后的数据存储到hdfs,然后在需要时将存储的数据压缩到另一个文件系统。我是日志记录框架的新手,不确定如何启动。我正在寻找有关如何继续上述要求的日志记录框架的建议。

仅供引用,将有用户定义的异常和消息,它们也将成为日志的一部分。

最佳答案

您可以使用Log4j(http://logging.apache.org/log4j/2.x/)。它随Hadoop一起提供,因此无需添加任何库。

Log4j非常简单,记录您刚刚使用的消息logger.info("info message")记录异常错误消息,使用logger.error("error message",exceptionObject)
这是有关如何在Mapper类中使用Log4j的示例代码。驱动程序和 reducer 也一样

package com.test;
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.log4j.Logger;

public class MyMapper extends Mapper<LongWritable, Text, Text, Text> {
    private static final Logger logger = Logger.getLogger(MyMapper.class);

    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context) throws IOException, InterruptedException {
        //logger.error("This is error", e);
        logger.error("This is error");
        logger.warn("This is warning");
        logger.info("This is info");
        logger.debug("This is info");
        logger.trace("This is info");
    }
}

如果您拥有hadoop集群,则来自各个映射器/还原器的日志消息将位于执行它们的节点中

关于hadoop - hadoop的日志记录框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517821/

相关文章:

hadoop - 将数据加载到HBase

java - log4j :WARN No appenders could be found for logger (org. springframework.web.filter.CharacterEncodingFilter)。使用 log4j2

amazon-web-services - 什么是 AWS CloudWatch 中的公开日志?

java - 如何防止Web Service故障被记录在sys.out中?

hadoop - 我们可以使用nosql数据库作为Hive Metastore吗?

json - 无法使用JSON Serde在Hive上上传JSON文件

hadoop - 发行Hive AvroSerDe tblProperties最大长度

apache2 记录日志

java - 每次程序执行如何在 log4j 中创建日志文件?

java - 使用 jmock 模拟 Logger.getLogger()