我必须在一个日志框架上工作,该框架将捕获hadoop作业的日志,该作业将从hdfs加载数据,处理数据,将处理后的数据存储到hdfs,然后在需要时将存储的数据sqoop到另一个文件系统。我是新的日志框架,不知道如何开始。我正在寻找关于如何继续进行上述要求的日志框架的建议。仅供参考,用户定义的异常和消息也将成为日志的一部分。
xxhby3vn1#
你可以用log4j(http://logging.apache.org/log4j/2.x/). 它与hadoop一起提供,因此不需要添加任何库。log4j非常简单,只需记录您使用的消息 logger.info("info message") 使用异常记录错误消息 logger.error("error message",exceptionObject) 下面是关于如何在Map器类中使用log4j的示例代码。同样适用于你的驱动器和减速器
logger.info("info message")
logger.error("error message",exceptionObject)
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的日志消息将位于执行它们的节点中
1条答案
按热度按时间xxhby3vn1#
你可以用log4j(http://logging.apache.org/log4j/2.x/). 它与hadoop一起提供,因此不需要添加任何库。
log4j非常简单,只需记录您使用的消息
logger.info("info message")
使用异常记录错误消息logger.error("error message",exceptionObject)
下面是关于如何在Map器类中使用log4j的示例代码。同样适用于你的驱动器和减速器如果您有hadoop集群,那么来自各个mapper/reducer的日志消息将位于执行它们的节点中