Flume
数据收集的方式大概两种:
日志: Flume
网页-:收集手段 – 爬虫,埋点
简介
- 概念
Flume实际上是Apache提供的一套数据收集分布式系统,对日志进行:收集,汇聚,传输。 - 版本:
a.Flume0.X-Fliume-og
b.Flume1.X-Flume-ng, Flume-ng不兼容Flume-og
基本概念
- Event:
a.Flume会将收集每一条日志封装成一个Event对象
b.Event对象本质上是一个json串,包含headers以及body,收集的日志是放在body中的 - Agent:
a.在Flume中,Flume的结构是以Agent形式来组建的
b.Agent由Source,Channerl和Sink结构来组成的
c.source:从数据源采集数据
d.Channel:缓存数据
e.Sink:将数据发送写往目的地
f. 在Flume中,一个Source可以绑定多个Channel
(Agent是单级流动)
- 多级流动
- 扇入流动
- 扇出流动
配置环境
- wget http://bj-yzjd.ufile.cn-north-02.ucloud.cn/apache-flume-1.6.0-bin.tar.gz 在云主机安装
- wget http://bj-yzjd.ufile.cn-north-02.ucloud.cn/nc-1.84-22.el6.x86_64.rpm
在云主机上安装nc,用来启动hadoop端口
Source
- AVRO: 接收AVRO序列化之后的数据,结合AVRO Sink可以实现多级流动,扇入流动和扇出流动
- Spooling Directory:监听指定的目录,当目录中新添文件的时候,这个文件中的内容会自动被收集,但是收集够的文件再被篡改不再收集。
- HTTP:监听HTTP请求,并且最好监听POST请求,GET请求不稳定,其他请求方式不支持
- 自定义Source:
a.如果需要自定义Source,需要实现EcentDrivenSource或者PollableSource
i EventDrivenSource:时间驱动Source-被动型Source,不会提供线程去获取数据,需要自定义线程去获取数据。
ii PollabkeSource:拉取Source-主动型Source,提供了线程获取数据
b.需要实现Configurable接口获取指定的属性值
Channel
- Menory:内存通道,将数据存储再内存中,存储速度相对较快但是不可靠,在使用的时候需要指定容量,Memory Channel如果满了,后续的数据会被阻塞,所以Memory Channel本质上是一个BlickingDeque
- File:文件通道。将数据存储在磁盘中,读写速度相对较慢但是可靠
Sink
- File_roll:将数据写到文件中,在使用的时候需要指定文件的存储路径,如果不指定默认情况下是每隔30s产生一个新文件
- HDFS:将数据写到HDFS上,在连接HDFS的时候,需要指定NameNode所在地址
- AVRO: