Flume
1. Flume
日志采集
- 读数据 组件是 resource
- 缓存数据 channel 原因是读写速度的不一致,可以缓存在内存或本地文件,临时储存。看做一个数据的缓冲区(数据队列),它可以将事件暂存到内存中也可以持久化到本地磁盘上, 直到Sink处理完该事件
- 写数据 组件是 sink
- source
- Exec Source:实时搜集一个文件中新增的数据,不支持断点续传
- Spooling Directory Source:监控目录,新的文件,不支持断点续传
- TailDir Source:flume1.7 新加入的组件,支持断点续传
- channel
- memory channel:保存在内存,速度快,可能丢数据
- file channel:保存在磁盘的文件中,不会丢数据,速度慢
- kafka channel:省去sink,下一级必须是kafka,即直接传给kafka
- sink
拦截器
- ETL拦截器:清洗
- 类型拦截器:分类
flume 把内部的格式统一封装为 event,保存一些描述信息和具体数据
拦截器的位置在Source和Channel之间,当我们为Source指定拦截器后,我们在拦截器中会得到event,根据需求我们可以对event进行保留还是抛弃,抛弃的数据不会进入Channel中。
Flume可靠性在于Sink 必须在Event 被存入 Channel 后,或者,已经被传达到下一站agent里,又或者已经被存入外部数据目的地之后,才能把 Event 从 Channel 中 remove 掉。而Flume支持在本地保存一份文件 channel 作为备份,而memory channel 将event存在内存 queue 里,速度快,但丢失的话无法恢复。
1 | 配置写到HDFS |