Flume

转载 2016年04月28日 16:01:55

Flume海量日志采集、聚合和传输的系统
不依赖hadoop,只依赖jdk
可以向外暴露地址和端口,让其他服务器将数据加密或者走内网发送到Flume上,然后再通过sink到hdfs上

Flume-Og
Flume-Og架构
Flume-Og采用了分层架构:分别为agent,collector和storage。其中,agent和collector均由两部分组成:source和sink,source是数据来源,sink是数据去向。storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase,分布式存储等。
Master是管理协调agent和collector的配置等信息,是flume集群的控制器。

Flume-Ng
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之监控

Flume作为一个日志收集工具,在数据采集方面,展现出了非常强大的能力。
  • u014039577
  • u014039577
  • 2016年05月30日 15:07
  • 4404

Flume 常见配置zo

1. Source NetCat Source:绑定的端口(tcp、udp),将流经端口的每一个文本行数据作为Event输入; type:source的类型,必须是netcat。 bind:要监...
  • sang1203
  • sang1203
  • 2016年05月22日 12:54
  • 1790

flume插件开发

转自: 首先第一步你有这个类: 开发完毕,然后打包jar包,将jar包加入到flume中,有两种方法: 方法一 : 进入vi /etc/profile 在文件中加入 export FL...
  • lskyne
  • lskyne
  • 2014年07月08日 11:35
  • 7228

flume高并发优化——(1)load_balance

通过一年多时间的使用,统一日志系统,已经接入公司前台,在20个节点,几十万用户,数百亿交易额的大压力下,仅仅使用了一个普通的服务器,承受住了严峻的考验,在公司今年更宏大的目标,也是为了给大数据组提供更...
  • xvshu
  • xvshu
  • 2016年04月25日 16:33
  • 5845

Flume-ng 数据发送速度限制

按理说,应该在sink端限制数据的发送速度,但flume-ng提供了非常便利的interceptor模式,因此本文,就只是在source端简单的实现了对数据发送速度的限制。...
  • Desilting
  • Desilting
  • 2014年06月10日 15:10
  • 4735

flume 启动不输出运行日志

问题以前碰到的一个问题,算是一个小问题,flume 用命令./flume-ng agent -c /opt/apps/flume/conf -f /opt/apps/flume/conf/syslog...
  • u012373815
  • u012373815
  • 2017年10月24日 09:33
  • 698

flume插件开发及部署

本文基于flume1.7讲解 一、自定义source开发 方法一: 你可以在start方法中启动额外的线程,不断的往channel中发数据。方法二: 此方法中多了一个process()方法,这...
  • qq_23146763
  • qq_23146763
  • 2017年02月03日 23:00
  • 1073

Flume的基本概念

一:Flume介绍 1.1、在hadoop生态圈中,Flume的位置。 1.2、Flume是什么?     有Cloudera公司开源     分布式、可靠、高可用的海量日志采集系统 ...
  • qq_24908345
  • qq_24908345
  • 2016年11月18日 13:54
  • 1570

flume性能调优总结

fllume经常被用在生产环境中收集后端产生的日志。一个flume进程就是一个Agent。要充分发挥flume的性能最主要的是要调好flume的配置参数。 flume agent配置分为三部分:Sou...
  • yanshu2012
  • yanshu2012
  • 2017年01月06日 11:42
  • 2090

Flume 读取JMS 消息队列消息,并将消息写入HDFS

Flume 读取JMS 消息队列消息,并将消息写入HDFS
  • zhifeiyu2008
  • zhifeiyu2008
  • 2015年08月18日 10:00
  • 1801
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flume
举报原因:
原因补充:

(最多只允许输入30个字)