1. Flume拦截器
- 拦截器注意事项
- 项目中定义了:ETL拦截器和时间戳拦截器。
- 采用两个拦截器的优缺点:优点,模块化开发和可移植性;缺点,性能可能会低一点。
- 自定义拦截器的步骤
-
- 实现Interceptor接口
-
- 重写四个方法
- initialize:初始化
- public Event intercept(Event event)处理单个Event
- public List<Event> intercept(List<Event> events)处理多个Event,在这个方法中调用Event intercept(Event event)
- close方法
-
- 静态内部类,实现Interceptor.Builder
- 拦截器可以不用吗?
- 可以不用;但是需要处理的逻辑需要在下一级(hive的dwd层或者sparkstreaming)里面处理。
- 优势:只处理一次,轻度处理;劣势:影响性能,不适合实时要求比较高的场景。
2. Flume Channel选择器
Replicating:默认选择器。功能:将数据发往下一级所有通道
Multiplexing:选择性发往指定通道
3. SinkProcessor
- DefaultSinkProcessor:单个Sink。
- LoadBalancingSinkProcessor:Sink Group可实现负载均衡的功能
- FailoverSinkProcessor:Sink Group,可实现错误恢复。