设为首页 收藏本站
查看: 1289|回复: 0

[经验分享] Flume NG 学习笔记(一)简介

[复制链接]

尚未签到

发表于 2015-11-27 17:00:48 | 显示全部楼层 |阅读模式
一、简介
Flume是一个分布式、可靠、高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据的简单处理,并写到各种数据接收方的能力。

  Flume在0.9.x and 1.x之间有较大的架构调整,1.x版本之后的改称Flume NG(next generation),0.9.x的称为Flume OG(originalgeneration)。
  对于OG版本, Flume NG (1.x.x)的主要变化如下:
  1、sources和sinks 使用channels进行链接
  2、两个主要channel 。1) in-memorychannel  非持久性支持,速度快。2)JDBC-based channel 持久性支持。
  3、不再区分逻辑和物理node,所有物理节点统称为 “agents”,每个agents 都能运行0个或多个sources 和sinks
  4、不再需要master节点和对zookeeper的依赖,配置文件简单化。
  5、插件化,一部分面对用户,工具或系统开发人员。
  6、使用Thrift、Avro Flume sources 可以从Flume0.9.4 发送 events  到Flume 1.x
  下图为Flume体系架构
DSC0000.jpg
  其中相关组件如下:
组件

功能

Agent

使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。

Client

生产数据,运行在一个独立的线程。

Source

从Client收集数据,传递给Channel。

Sink

从Channel收集数据,运行在一个独立线程。

Channel

连接 sources 和 sinks ,这个有点像一个队列。

Events

可以是日志记录、 avro 对象等。

  
  Flume架构整体上看就是 source-->channel-->sink 的三层架构,类似生成者和消费者的架构,他们之间通过channel传输,解耦。
  Flume以agent为最小的独立运行单位。一个agent就是一个JVM。单agent由Source、Sink和Channel三大组件构成,注:运行Flume时,机器必须安装装JDK6.0以上的版本
  事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外数据源生成
  当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。
  Flume支持用户建立多级流,也就是说,多个agent可以协同工作
  
DSC0001.jpg
二、Flume Source
  FlumeSource :完成对日志数据的收集,分成transtion 和event 打入到channel之中。
  Flume提供了各种source的实现,包括Avro Source、Exce Source、Spooling Directory Source、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source,etc。
  对现有程序改动最小的使用方式是使用是直接读取程序原来记录的日志文件,基本可以实现无缝接入,不需要对现有程序进行任何改动。直接读取文件Source,有两种方式:
  1、Exec Source 以运行Linux命令的方式,持续的输出最新的数据,如tail -F 文件名指令,在这种方式下,取的文件名必须是指定的。
  ExecSource 虽然支持实时数据,但是在flume不运行和脚本错误时,会丢数据,也不支持断点续传功能。因为没有记录上次文件读到的位置,从而没办法知道,下次再读时,从什么地方开始读。特别是在日志文件一直在增加的时候。flume的source挂了。等flume的source再次开启的这段时间内,增加的日志内容,就没办法被source读取到了。不过flume有一个execStream的扩展,可以自己写一个监控日志增加情况,把增加的日志,通过自己写的工具把增加的内容,传送给flume的node。再传送给sink的node。要是能在tail类的source中能支持,在node挂掉这段时间的内容,等下次node开启后在继续传送,那就更完美了。
  
  2、Spool Source是监测配置的目录下新增的文件,并将文件中的数据读取出来。其中,SpoolSource有2个注意地方,第一个是拷贝到spool目录下的文件不可以再打开编辑,第二个是spool目录下不可包含相应的子目录。
  SpoolSource在实际使用的过程中,可以结合log4j使用,使用log4j的时候,将log4j的文件分割机制设为1分钟一次,将文件拷贝到spool的监控目录。 log4j有一个TimeRolling的插件,可以把log4j分割的文件到spool目录。基本实现了实时的监控。Flume在传完文件之后,将会修 改文件的后缀,变为.COMPLETED(后缀也可以在配置文件中灵活指定)
  Exec Source 和Spool Source 比较
  1)、ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法何证日志数据的完整性。
  2)、SpoolSource虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。
  3)、总结:如果应用无法实现以分钟切割日志文件的话,可以两种收集方式结合使用。二、Flume Sink
  FlumeSink取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。
  Flume也提供了各种sink的实现,包括HDFS sink、Loggersink、Avro sink、File Roll sink、Null sink、HBase sink,etc。
  
三、Flume Channel
  FlumeChannel主要提供一个队列的功能,对source提供中的数据进行简单的缓存。
  Flume对于Channel,则提供了Memory Channel、JDBC Chanel、File Channel,etc。
  其中:
  MemoryChannel可以实现高速的吞吐,但是无法保证数据的完整性。
  MemoryRecoverChannel在官方文档的建议上已经建义使用FileChannel来替换。
  FileChannel保证数据的完整性与一致性,事件持久化在本地文件系统里(性能较差)。在具体配置不现的FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-144262-1-1.html 上篇帖子: Cloudera Flume介绍 下篇帖子: 【Flume NG用户指南】(0)介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表