分布式的实时文件、网络端口数据流采集,可以将各种不同数据源的数据实时采集到各种目的地
特点实时采集 实时监听数据源,一有数据产生就采集
功能全面 大数据常用数据源和目标地都封装好了对应的接口
允许自定义开发 Java开发的源码,提供了自定义开发的接口
开发相对简单 开发一个配置文件,写入配置即可
可以实现分布式采集 本身不是分布式工具,可以实现分布式采集
架构Agent:一个flume程序就是一个Agent
Event:flume采集的数据封装为Event对象进行传输
Source:实时监听数据源,数据源一产生数据就采集
Channel:负责临时存储采集到的数据,将所有Event临时存储
Sink:负责将Channel中的数据发送到目标地,主动从Channel取数
多数据源架构
设计目的:将一份数写入不同的目的地
多层架构
设计目的:防止多个Flume程序直接与目的地进行数据交互,影响目的地性能
使用方式离线(采集到HDFS):配置Source 和Sink文件,启动Hive和HDFS, 在命令行提交运行
实时(采集到Kafka):配置Source 和Sink文件,采集到kafka,供实时计算程序消费
同类软件对比Sqoop 底层是MapReduce,适合离线数据量特别大的采集
Flume 适合实时采集文件,网络端口
Canal 适合实时采集MySQL数据库
同类软件对比sqoop 底层是MapReduce,适合离线数据量特别大的采集
Flume 适合实时采集文件,网络端口
Canal 适合实时采集MySQL数据库
高级组件Interceptor:拦截器,在source将每条数据转换成event的时候,可以在event头铺添加kv或者对数据进行过滤
添加数据:
Timestamp Interceptor
Host Interceptor
Static Interceptor
过滤数据:
Regex Filtering Interceptor
Channel Select
默认source 的数据发往每个channel一份,可以根据Agent头部的key的不同,发往不同channel
Sink Processor
功能
负载均衡
多个sink以sink group的方式一起工作,其中一个故障,还可以正常进行采集
故障转移
多个sink,一个工作,其他的不工作,只有在工作的sink故障才工作,保证采集正常进行