HDFS日志数据的采集

328 阅读1分钟

Flume采集

针对做hdfs日志的异常检测,首先获取日志或者怎么拿到自己想要的数据关键。

由于我们只针对hdfs日志的数据块进行异常检测,也就是我们只针对在block数据块上的操作进行异常检测,所以我们只关心,获取自己想要的数据就可以。

在hadoop集群中,我们主要负责采集关于block相关的数据,即nameNode,dataNode文件。

而在日志文件中除了关于block相关操作的数据,还有其他一些数据。如下图所示

image.png

我们只想获取关于block相关操作的数据,所以,在数据采集的时候要对数据进行拦截,即只采集有关block相关的数据,而关于block数据,我们发现都有blk_1073741825_1001相关的字样。

所以我们只需要在flume采集的时候进行拦截器配置即可。

部分代码为

public class BlockUtils {
    //验证数据是否含有Block
    public static boolean isValidate(String log) {
        String REGEX= ".*blk_-?\d+";
        Pattern pattern = Pattern.compile(REGEX);
        Matcher matcher = pattern.matcher(log);
//        boolean isMatch = Pattern.matches(pattern, log);
        if(matcher.lookingAt()){
            return true;
        }else {
            return false;
        }
    }
}

通过上面的拦截器之后,最终flume采集到的日志为:

image.png 至此就可以从原始日志中采集自己想要的日志数据。