Flume数据流处理机制与源码.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

【组件和原理】

Flume以agent为最小的独立运行单位。一个agent就是一个JVM。单agent由Source、Sink和Channel

三大组件构成

Flume的数据流由(Event)贯穿始终。是Flume的基本数据单位,它携带日志数据(字节数组形式)

并且携带有头信息,这些Event由Agent外部的Source,比如上图中的WebServer生成。当Source捕

获后会进行特定的格式化,然后Source会把推入(单个或多个)Channel中。你可以把Channel看

作是一个缓冲区,它将保存直到Sink处理完该。Sink负责持久化日志或者把推向另一个

Source。

Flume支持用户建立多级流,也就是说,多个agent可以协同工作,并且支持Fan-in、Fan-out、

ContextualRouting、BackupRoutes

对于直接文件Source,主要有两种方式

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

可以实现实时传输,但在flume不运行和错误时,会丢数据,也不支持断点续能。因为没有记录

上次文件读到的位置,从而没办法知道,下次再读时,从什么地方开始读。特别是在日志文件一直在增加的

时候。flume的source挂了。等flume的source再次开启的这段时间内,增加的日志内容,就没办法被

source到了。不过flume有一个execStream的扩展,可以自己写一个日志增加情况,把增加的

日志,通过自己写的工具把增加的内容,传送给flume的node

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

两点:1、拷贝到spool目录下的文件不可以再打开编辑。2、spool目录下不可包含相应的子目录。在实

际使用的过程中,可以结合log4j使用,使用log4j的时候,将log4j的文件分割机制设为1分钟一次,

将文件拷贝到spool的目录。log4j有一个TimeRolling的插件,可以把log4j分割的文件到spool

目录。基本实现了实时的。Flume在传完文件,将会修改文件的后缀,变为.COMPLETED(后缀也可

以在配置文件中灵活指定)

ExecSource,SpoolSource对比:ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指

令执行出错时,将无法收集到日志数据,无法何证日志数据的完整性。SpoolSource虽然无法实现实时的收集

数据,但是可以使用以分钟的方式分割文件,趋近于实时。如果应用无法实现以分钟切割日志文件的

话,可以两种收集方式结合使用。

【聚合操作】

在各个webserv日志机上配置FlumeClient

#clientMainAgent

clientMainAgent.channels=c1

clientMainAgent.sources=s1

clientMainAgent.sinks=k1k2

#clientMainAgentsinksgroup

clientMainAgent.sinkgroups=g1

#clientMainAgentSpoolingDirectorySource

clientMainAgent.sources.s1.type=spooldir

clientMainAgent.sources.s1.spoolDir=/d/rawdata/

clientMainAgent.sources.s1.fileHeader=true

clientMainAgent.sources.s1.delete=immediate

clientMainAgent.sources.s1.batchSize=1000

clientMainAgent.sources.s1.channels=c1

clientMainAgent.sources.s1.deserializer.maxLineLength=1048576

#clientMainAgentFileChannel

clientMainAgent.channels.c1.

您可能关注的文档

文档评论(0)

136****1820 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档