当前大数据时代的一个流式日志采集工具——Flume

发布时间 2023-11-09 21:11:26作者: cyznb

1.什么是流式日志?

大数据时代的数据大概的说可以分为流式的data以及批式的data

什么意思呢?

  • 顾名思义就是,对data进行处理的方式不一样,流式就是像流水一样,不断流入,它是每时每刻都有的,实时的都需要进行收集然后处理;
  • 反观批式data,它是一批一批的来,等到收集到一批(达到某个阈值)data再统一一起对它们进行处理,即非实时。

2.Flume的概念

  • 开源(可以共同使用)的分布式(多个节点)日志(记录主机上的各种信息)系统

3.Flume的基础架构

Agent中分三个部分:Source(从日志中拿出data并进行data的一系列处理,下面会谈到)+Channel(通道,缓存,暂时存储data)+Sink(把channel的data传给目的地(下面会谈到)

单Agent架构如下:(多Agent也是一样)

  • 它是从Log(日志)中拿到数据(Source去拿),并且在其中进行处理,比如一些数据清洗,缺失值异常值等等的处理,处理到直到最后生成可以进行训练模型的数据,然后传给Channel

  • Channel中进行缓存,暂时保存着要被Sink拿去的数据(因data数量大需要等待)。

  • Sink就是把Channel的数据拿出来传送,目的地可以是下一个Agent(即给下一个Agent中的(Source继续循环操作)),也可以给HDFS(分布式文件系统,把它理解为一个最终的存储data的地方就可以了,用以下一次data进行操作的存储)保存下来。

上面提到的Sink给下一个Agent就是多Agent的架构,如直接给HDFS就是单Agent。

3的补充

Agent中的Channel又可以分为三类:

  • Memory Channel:突出特点就是它不会持久化data(顾名思义,存在内存),即关机时会不保存data
  • File Channel:持久化data,关机时会写到磁盘
  • JDBC Channel:持久化data,在File基础上,可以基于嵌入式数据库来实现(这里我也不是很懂,我的理解就是数据库这门课里面的在命令行中写代码来实现它)