首页 > 技术文章 > Flume

mxxct 2020-10-22 10:32 原文

date: 2020-03-31 14:09:00
updated: 2020-06-15 11:16:00

Flume

1. Flume

日志采集

  1. 读数据 组件是 resource
  2. 缓存数据 channel 原因是读写速度的不一致,可以缓存在内存或本地文件,临时储存。看做一个数据的缓冲区(数据队列),它可以将事件暂存到内存中也可以持久化到本地磁盘上, 直到Sink处理完该事件
  3. 写数据 组件是 sink

flume 把内部的格式统一封装为 event,保存一些描述信息和具体数据

拦截器的位置在Source和Channel之间,当我们为Source指定拦截器后,我们在拦截器中会得到event,根据需求我们可以对event进行保留还是抛弃,抛弃的数据不会进入Channel中。

Flume可靠性在于Sink 必须在Event 被存入 Channel 后,或者,已经被传达到下一站agent里,又或者已经被存入外部数据目的地之后,才能把 Event 从 Channel 中 remove 掉。而Flume支持在本地保存一份文件 channel 作为备份,而memory channel 将event存在内存 queue 里,速度快,但丢失的话无法恢复。

配置写到HDFS
hdfs.rollCount = 10 // 相当于event采集到10条数据就写一次
hdfs.batchSize = 100 // 相当于event在写数据的时候一批的数量
hdfs.fileType = SequenceFile // 默认是SequenceFile,还有 DataStream(原始数据是什么,写完也是什么)

tier1.sinks.hdfsSink_26.hdfs.path = hdfs://nameservice/user/flume/kafka/hehe/%{topic}/%Y%m%d

推荐阅读