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基础上,可以基于嵌入式数据库来实现(这里我也不是很懂,我的理解就是数据库这门课里面的在命令行中写代码来实现它)