Flume-非关系型数据的收集

背景

在现实世界中,非关系型的数据远远多于关系型数据

Flume的基本思想和特点

  • 采用插拔式软件架构,所有组件都是可插拔的
  • 良好的可扩展性
  • 高度定制化
  • 声明式动态化配置
  • 语意路由
  • 良好的可靠性(支持事务)

以往版本

  • flume og 0.9之前的的版本,已被弃用
  • flume ng 现在广泛使用的
    这两个版本是不兼容的

flume (ng版本)基本架构

agent
  • 一系列的数据流称为agent
  • 从接受到下一个接受中间的数据流
  • 主要包括source channel sink
event
  • flume中的数据流传递的数据称为event
  • event由头部和字节数组组成
source
  • agent的内部成员
  • flume中接受event的组件
  • source的种类
    1、avro source (内置avro server)
    2、thrift source (内置thrift server)
    3、exec source (执行指定的shell)
    4、spooling Directory source (检测某个文件内的文件的变化)
    5、kafka source (从kafka中读取数据)
    6、syslog source(接收tcp 和 udp 发过来的数据)
    7、http source (接收http协议发来的数据)
    8、taildir source(检测文件的变化 用的较多)
channel
  • channel是一个暂存区,保存source写入的event,直到被sink 发射出去
  • channel包含以下种类:
    1、memory channel
    2、file channel
    3、jdbc channel
    4、kafka channel
sink
  • sink 负责从channel 中读取数据,并发送给下一个agent的source,
  • sink的种类:
    1、hdfs sink
    2、hbase sink
    3、avro/thrift sink
    4、morphlineSorlSink
    5、kafka sink
flume 的事务
  • flume使用事务的方式是保证event传递的可靠性
  • sink 必须在event被存入channl 后,或者已经传递给下一个agent后,才从上个channel中吧数据删除

flume的高级组件

interceptor
  • 类似于spring mvc 的拦截,来实现在event传输过程中的拦截
  • 拦截的数据可以保存在event的头部
  • interceptor 分为:
    1、timestamp interceptor
    2、host interceptor
    3、uuid interceptor
    4、regex filtering interceptor (正则过滤)
    5、regex extractor interceptor(正则取出)
channel selector
  • channel selector 允许flume source选择一个或多个目标channel,并将当前的event写入这些channel,flume提供两种channel selector:
    1、replicating channel selector
    2、multiplexing channel selector
sink processor
  • flume允许将多个sink 组装成一个逻辑实体(sink group)而sink processor则在sink group的基础上提供负载均衡和容错的功能
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容