Flume ?
1.是一个海量日志采集,聚合和传输的系统,支持在日志系统中定制各类数据发送方。用于收集数据。
2.可以对数据进行简单处理,并写到各种数据接受方的能力。flume以流方式处理数据,可作为代理持续运行。
当数据可用时,Flume能够立即获取数据并输出至目标,这样可以在很大程度上解决时效性问题。
Flume的核心:
整个数据传输过程中,流动的是event,事务的保证也在event中进行。Event对数据进行封装,是Flume传输的基本单位传输过程中可以携带headers信息。
Flume分4步走:
1. 数据源
2.缓存到哪里?(自己设置是内存,还是文件)
3.目的(是放在HDFS,Hbase 还是solr中)
4.数据缓存完毕,源数据存储完整,删除缓存数据
为什么flume要有个缓存呢?为了保证数据的完整性
优缺点:优点:1.配置比较简单,不用编程;
2.采用sql轮询方式,具有通用性,支持多种数据源;
3.保证数据的准时性;
缺点:1.在源库查询,具有入侵性
2.轮询间隔越短,对源库影响越大
3.只能识别新数据,不能检测删除与更新
4.要求源库必须有用于表示增量的字段
Flume如何写入多个kafka分区中:
我们需要向header中写上随机的key,然后数据才会真正的向kafka分区进行随机发布。
hiveview.sources.tailSource.interceptors = i2
hiveview.sources.tailSource.interceptors.i2.type=org.apache.flume.sink.solr.morphline.UUIDInterceptor$Builder
hiveview.sources.tailSource.interceptors.i2.headerName=key
hiveview.sources.tailSource.interceptors.i2.preserveExisting=false