flume介绍与原理
一、flume介绍
flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。
flume的优势:
1、 Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase。
2、当收集数据的速度超过将写入数据的时候,也就是当收集信息遇到峰值时,这时候收集的信息非常大,甚至超过了系统的写入数据能力,这时候,Flume会在数据生产者和数据收容器间做出调整,保证其能够在两者之间提供一共平稳的数据.
3、提供上下文特征
4、flume的管道是基于事务,保证了数据在传送和接收时的一致性
5、flume是可靠的,容错性高的,可升级的,易管理的,并且可定制的。
Flume具有的特征:
1、 Flume可以高效率的将多个网站服务器中收集的日志信息存入HDFS/HBase中
2、. 使用Flume,我们可以将从多个服务器中获取的数据迅速的移交给Hadoop中
3、除了日志信息,Flume同时也可以用来接入收集规模宏大的社交网络节点事件数据,比如facebook,twitter,电商网站如亚马逊,flipkart等
4、支持各种接入资源数据的类型以及接出数据类型
5、支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等
6、可以被水平扩展
flume架构:
source:数据源
产生数据流,同时source将产生的数据流传输到channel
channel:传输通道
用于桥接Source和sinks
sinks:下沉
从channel收集数据
event:传输单元
Flume数据传传输的基本单元,以事件的形式将数据送往目的地。
具体过程为:按照需求配置一个agent,选取适当的source和sink,然后启动该agent,开始采集日志。
source
flume提供多种source供用户进行选择,尽可能多的满足大部分日志采集的需求,常用的source的类型包括avro、exec、netcat、spooling-directory和syslog等。
avro source:avro可以监听和收集指定端口的日志,使用avro的source需要说明被监听的主机ip和端口号
agent1.sources.r1.type = avro (类型为avro source)
agent1.sources.r1.bind = 0.0.0.0 (指定监听的主机ip.本机是0.0.0.0.)
agent1.sources.r1.port = 16667 (指定监听的端口号)
exec source:可以通过指定的操作对日志进行读取,使用exec时需要指定shell命令,对日志进行读取
agent1.sources.r2.type = exec
agent1.sources.r2.command =tail -F /root/flume/log/event.txt (监听的文件的路径)
agent1.sources.r3.type = spooldir
agent1.sources.r3.spoolDir = /root/flume/log (监听的文件目录)
agent1.sources.r3.fileHeader