Flume ng 简述

简介

Apache flume是一个日志收集系统

  • 可以部署到一台机子上,也可以部署到多台机子上
  • 可以从多个来源获取数据,也可以将数据发往多个地方
我们这里主要讲一下flume ng,是flume og的下一个版本,更灵活,更稳定

架构

flume ng架构图如下

Agent component diagram

每个flume实例称为agent,是一个java进程

agent中包含Source,channel,Sink

  • source用来从数据源获取数据,并保存到channel中
  • channel用于缓存数据,协调source与sink的不同处理速率
  • sink从channel中取出数据,将数据发往目标位置,如:HDFS

应用场景

通过source,channel,sink的不同组合,可以满足各种各样的应用场景

1,一个数据源对应一个目标源

一个或多个source---->一个channel---->一个或一组sink(不论是一个或多个,同一时间只用一个sink在起作用,每组sink只能写入一个目标源)

2,一个数据源对应多个目标源

一个source----->多个channel------->多组sink(每组sink对应一个channel,且每组sink只能写入一个目标源),数据是在source到channel的过程中复制成多份的

3,多个数据源对应一个目标源

      多个source---->一个或多个channel---->一组或多组sink(所有sink都指向同一个目标源)

4,多个数据源对应多个目标源

      以上3种情况混合使用

其它

  • 系统已经提供了多种source,channel,sink的实现
  • channel是事务性的
  • 拦截器位于source和channel之间,用于过滤数据,可以配置多个,系统提供多个默认实现
  • channel选择器包括复制channel选择器和多路复用channel选择器,在source和channel之间使用,是应用场景2的关键技术
  • sink组和sink处理器是用来保证系统负载均衡和故障转移的,并不能提高输出效率
  • sink处理器包括3种:默认处理器,负载均衡处理器,故障转移处理器
  • 如果没有配置sink处理器,采用默认处理器,默认处理器会使用sink列表中的第一个,列表中的其他sink都无效

你可能感兴趣的:(Flume ng 简述)