1、为什么选用Flume?(快、实时处理、不同介质的读取速度不一致,影响数据传输)

Flume详解

 

2、Flume组成架构(主要在Agent:source、channel、sink)

Flume详解

 

3、Flume Agent内部原理

Flume详解

 

4、案例

 监听数据端口案例分析

Flume详解

Flume详解

实时读取本地文件到HDFS案例

Flume详解

 

Flume详解

实时读取目录文件到HDFS案例

Flume详解

Flume详解

单数据源多出口案例

Flume详解

Flume详解

 

5、其他

  • Flume是Apache的顶级项目
  • 重构后的版本统称为 Flume NG
  • Flume是一个分布式、可靠、高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据的简单处理,并写到各种数据接收方的能力。
  • Event事件是Flume的基本数据单位,也就是传送的是事件
  • Flume 运行的核心是 Agent,Flume以agent为最小的独立运行单位
  • Source接受数据生成Event、Event携带数据、Source将Event格式化后,推入Channel中,Channel可以看成是缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source
  • Event的格式采用了json格式来定义的,这个json串中包含了2个部分:headers和body

Flume概念:

  1. Client:Client生产数据,运行在一个独立的线程。
  2. Event: 一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。)
  3. Agent: 一个独立的Flume进程,包含组件Source、 Channel、 Sink。(Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。)
  4. Source: 数据收集组件。(source从Client收集数据,传递给Channel)
  5. Channel: 中转Event的一个临时存储,保存由Source组件传递过来的Event。(Channel连接 sources 和 sinks ,这个有点像一个队列。)
  6. Sink: 从Channel中读取并移除Event, 将Event传递到FlowPipeline中的下一个Agent(如果有的话)(Sink从Channel收集数据,运行在一个独立线程。)

Flume三级别可靠性:end-to-end、Store on failure、Best effort

  • end-to-end:收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。
  • Store on failure:这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送
  • Best effort:数据发送到接收方后,不会进行确认

Flume大致过程:

  1. 写flume配置文件(source、channel、sink类型等等)
  2. 找到配置文件,开启监控
  3. 运行我们的基本程序
  4. flume会将对应日志数据通过sink传入到下一过程。

相关文章:

  • 2021-04-20
  • 2021-05-30
  • 2021-07-27
  • 2021-11-10
  • 2021-04-11
  • 2021-08-23
  • 2021-05-23
  • 2021-07-19
猜你喜欢
  • 2021-06-02
  • 2021-11-09
  • 2021-09-07
  • 2021-10-23
  • 2022-12-23
相关资源
相似解决方案