您的位置:首页 > 其它

Flume

2016-04-28 16:01 405 查看
Flume海量日志采集、聚合和传输的系统

不依赖hadoop,只依赖jdk

可以向外暴露地址和端口,让其他服务器将数据加密或者走内网发送到Flume上,然后再通过sink到hdfs上

Flume-Og



Flume-Og采用了分层架构:分别为agent,collector和storage。其中,agent和collector均由两部分组成:source和sink,source是数据来源,sink是数据去向。storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase,分布式存储等。

Master是管理协调agent和collector的配置等信息,是flume集群的控制器。

Flume-Ng



Source:完成对日志数据的收集,分成 transtion 和 event 打入到channel之中。

Channel:主要提供一个队列的功能,对source提供中的数据进行简单的缓存。

Sink:取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。

数据采集基于多个agent

source:

spooldir 监听目录,只要目录中有新的数据,就会将目录中的数据采集

exec:会将命令的返回值给source,和tail -F 可以实时采集数据

Exec source

可通过写Unix command的方式组织数据,最常用的就是tail -F [file]。

可以实现实时传输,但在flume不运行和脚本错误时,会丢数据,也不支持断点续传功能。

Spooling Directory Source

SpoolSource:是监测配置的目录下新增的文件,并将文件中的数据读取出来,可实现准实时。需要注意:

1、拷贝到spool目录下的文件不可以再打开编辑。也就是说不能再次更改这个文件,否则会跑异常

2、spool目录下不可包含相应的子目录。在实际使用的过程中,可以结合log4j使用,使用log4j的时候,将log4j的文件分割机制设为1分钟一次,将文件拷贝到spool的监控目录。log4j有一个TimeRolling的插件,可以把log4j分割的文件到spool目录。基本实现了实时的监控。Flume在传完文件之后,将会修改文件的后缀,变为.COMPLETED(后缀也可以在配置文件中灵活指定)

3、spool在sink为hdfs的情况下,传完数据后,本地文件就会变成access_20160505_000001.log.COMPLETED,当从hdfs上转入hive后,hdfs上的数据就消失了

ExecSource,SpoolSource对比:ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法何证日志数据的完整性。SpoolSource虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。如果应用无法实现以分钟切割日志文件的话,可以两种收集方式结合使用。

Channel有多种方式:有MemoryChannel, JDBC Channel, MemoryRecoverChannel, FileChannel。MemoryChannel可以实现高速的吞吐,但是无法保证数据的完整性。

flume 命令:

sh flume-ng 参数

global options:

–conf,-c 使用 目录下的配置

agent options:

–name,-n 这个Agent的名称(必需)

–conf-file,-f 指定一个配置文件 (如果有 -z 可以缺失)

–zkConnString,-z 指定使用的ZooKeeper的链接 (如果有 -f 可以缺失)

–zkBasePath,-p 指定agent config 在 ZooKeeper Base Path

启动

sh flume-ng agent –conf ./conf –conf-file ./conf/spool/data-log.conf –name data_agent -Dflume.root.logger=INFO,console >/letv/data/20160427.log 2>&1 &

(2>&1就是用来将标准错误2重定向到标准输出1中的。此处1前面的&就是为了让bash将1解释成标准输出而不是文件1。至于最后一个&,则是让bash在后台执行。)

配置:

/letv/data/apache-flume-1.6.0-bin/conf/spool/

data-log.conf:

sources:/letv/data/hadoop-2.6.0/logs

channels:内存

sinks:/letv/data/apache-flume-1.6.0-bin/dataconf/date.conf

resourcemanager-log.conf :

sources:/letv/data/hadoop-2.6.0/logs

channels:内存

sinks:/letv/data/apache-flume-1.6.0-bin/dataconf/resourcemanager-morphlines.conf

zkfc-log.conf:

sources:/letv/data/hadoop-2.6.0/logs

channels:内存

sinks:/letv/data/apache-flume-1.6.0-bin/dataconf/zkfc-morphlines.conf

参考:

http://www.cnblogs.com/cswuyg/p/4498804.html

http://andrewli.blog.51cto.com/7625043/1615155

http://my.oschina.net/leejun2005/blog/288136

http://www.cnblogs.com/lxf20061900/p/4012847.html

http://www.huyanping.cn/flumehive%E5%A4%84%E7%90%86%E6%97%A5%E5%BF%97/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Flume