hadoop的日志框架

时间:2015-05-28 22:01:55

标签: hadoop logging log4j hdfs apache-commons-logging

我必须处理一个日志框架,该框架将捕获hadoop作业的日志,该作业将从hdfs加载数据,处理数据,将处理后的数据存储到hdfs,然后在需要时将存储的数据sqoop到另一个文件系统。我是新的日志框架,不知道如何开始。我正在寻找有关如何继续执行上述要求的日志框架的建议。

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

1 个答案:

答案 0 :(得分:0)

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

Log4j非常简单,可以记录您刚刚使用的消息 logger.info("info message") 使用logger.error("error message",exceptionObject)

异常记录错误消息

以下是有关如何在Mapper类中使用Log4j的示例代码。您的Driver和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群集,来自各个mapper / reducer的日志消息将在执行它们的节点中