工具

文件channel验证工具

文件channel完整性校验工具可验证文件channel中各个Event的完整性,并删除损坏的Event。

这个工具可以通过下面这种方式开启:

  1. $bin/flume-ng tool --conf ./conf FCINTEGRITYTOOL -l ./datadir

datadir 是即将被校验的用逗号分隔的目录列表。

以下是可选的参数


选项

解释

h/help

显示帮助信息

l/dataDirs

校验工具会校验的目录列表,多个用逗号分隔

Event校验工具

Event验证器工具可用于按照预定好的逻辑验证文件channel中的Event。 该工具会在每个Event上执行用户自定义的验证逻辑,并删除不符合校验逻辑的Event。

提示

简单说就是一个自定义的Event校验器,只能用于验证文件channel中的Event。实现的方式就是实现 EventValidator 接口,没有被校验通过的Event会被丢弃。

多bb一句:目前还没想到这个工具有哪些用途,感觉可以用自定义拦截器来实现这种功能,说起拦截器又很奇怪在拦截器章节中居然没有介绍自定义拦截器。

这个工具可以通过下面这种方式开启:

  1. $bin/flume-ng tool --conf ./conf FCINTEGRITYTOOL -l ./datadir -e org.apache.flume.MyEventValidator -DmaxSize 2000

datadir 是即将被校验的用逗号分隔的目录列表。

以下是可选的参数


选项

解释

h/help

显示帮助信息

l/dataDirs

校验工具会校验的目录列表,多个用逗号分隔

e/eventValidator

自定义验证工具类的全限定类名,这个类的jar包必须在Flume的classpath中

自定义的Event验证器必须实现 EventValidator 接口,建议不要抛出任何异常。其他参数可以通过-D选项传递给EventValitor实现。

让我们看一个基于简单的Event大小验证器的示例,它将拒绝大于指定的最大size的Event。

  1. public static class MyEventValidator implements EventValidator {
  2.  
  3. private int value = 0;
  4.  
  5. private MyEventValidator(int val) {
  6. value = val;
  7. }
  8.  
  9. @Override
  10. public boolean validateEvent(Event event) {
  11. return event.getBody() <= value;
  12. }
  13.  
  14. public static class Builder implements EventValidator.Builder {
  15.  
  16. private int sizeValidator = 0;
  17.  
  18. @Override
  19. public EventValidator build() {
  20. return new DummyEventVerifier(sizeValidator);
  21. }
  22.  
  23. @Override
  24. public void configure(Context context) {
  25. binaryValidator = context.getInteger("maxSize");
  26. }
  27. }
  28. }