Flume采集
针对做hdfs日志的异常检测,首先获取日志或者怎么拿到自己想要的数据关键。
由于我们只针对hdfs日志的数据块进行异常检测,也就是我们只针对在block数据块上的操作进行异常检测,所以我们只关心,获取自己想要的数据就可以。
在hadoop集群中,我们主要负责采集关于block相关的数据,即nameNode,dataNode文件。
而在日志文件中除了关于block相关操作的数据,还有其他一些数据。如下图所示
我们只想获取关于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采集到的日志为:
至此就可以从原始日志中采集自己想要的日志数据。