目录
概述
flume是分布式的,可靠的,用于从不同的来源有效收集 聚集 和 移动 大量的日志数据用以集中式的数据存储的系统。
是apache的一个顶级项目
概念、模型和特点
概念:
Flume Event -
Flume 事件 - 被定义为一个具有有效荷载的字节数据流和可选的字符串属性集。
Flume Agent-
Flume 代理 - 是一个进程承载从外部源事件流到下一个目的地的过程。包含source channel 和 sink
-
Source - 数据源 - 消耗外部传递给他的事件,外部源将数据按照Flume Source 能识别的格式将Flume 事件发送给Flume Source
-
Taildir Source 相比 Exec Source、Spooling Directory Source 的优势
TailDir Source:断点续传、多目录。Flume1.6 以前需要自己自定义 Source 记录每次读取文件位置,实现断点续传。不会丢数据,但是有可能导致数据重复
Exec Source 可以实时搜集数据,但是在 Flume 不运行或者 Shell 命令出错的情况下,数据将会丢失。
Spooling Directory Source 监控目录,支持断点续传。
-
-
Channel - 数据通道 - 是一个被动的存储,用来保持事件,直到由一个Flume Sink消耗。
-
file channel :基于磁盘,可靠性高、效率低
memory channel:基于内存, 可靠性低、效率高
kafka channel:数据存储在Kafka里面。kafka数据存储在磁盘。
基于磁盘。可靠性高。
kafka channel 》 memory channel + kafka sink
性能高
哪个版本之后产生的?1.6产生的并没有火。
header+内容=》 bug
11.7之后版本解决了。在公司中大量使用。
-
-
Sink - 数据汇聚点 - 代表外部数据存放位置。发送flume中的事件到指定的外部目标。
特点:
-
复杂流动: Flume允许用户进行多级流动到最终目的地,也允许扇出流(一到多)、扇入流(多到一)的流动和故障转移、失败处理。
-
可靠性:事务型的数据传递,保证数据的可靠性。
-
可恢复:通道可以以内存或文件的方式实现,内存更快,但是不可恢复,文件比较慢但提供了可恢复性。
实践
添加主机
# topic
log_daohang.sources = r1
log_daohang.channels = c1
log_daohang.sinks = k1
# source
log_daohang.sources.r1.type = TAILDIR
log_daohang.sources.r1.filegroups = f1
log_daohang.sources.r1.filegroups.f1 = /data/dhlog/active/active.log
log_daohang.sources.r1.positionFile = /data/newsapp/h5/duoduo.json
log_daohang.sources.r1.interceptors = i1
log_daohang.sources.r1.interceptors.i1.type = org.apache.flume.sink.solr.morphline.UUIDInterceptor$Builder
log_daohang.sources.r1.interceptors.i1.headerName = key
log_daohang.sources.r1.interceptors.i1.preserveExisting = false
# channel
log_daohang.channels.c1.type = file
log_daohang.channels.c1.capacity = 10000
log_daohang.channels.c1.transactionCapacity = 1000
log_daohang.channels.c1.checkpointDir = /data/filechannel/checkpoint/daohang/ad
log_daohang.channels.c1.dataDirs =/data/filechannel/data/daohang/ad
# sink
log_daohang.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
log_daohang.sinks.k1.topic = log_9973_active
log_daohang.sinks.k1.brokerList = kafka1:9092,kafka2:9092,kafka3:9092
log_daohang.sinks.k1.channel = c1
log_daohang.sinks.k1.batchSize = 20
log_daohang.sinks.k1.kafka.producer.max.request.size = 10485760
log_daohang.sinks.k1.kafka.producer.compression.type = gzip
# bind
log_daohang.sources.r1.channels = c1
[root@dh-eater1 active]# mkdir -p /data/filechannel/checkpoint/daohang/ad
[root@dh-eater1 active]# mkdir -p /data/filechannel/data/daohang/ad
问题
1)重启后重新读取当天的资源
配置参数:log_daohang.sources.r1.positionFile = /data/newsapp/h5/duoduo.json