作者:周邦涛(Timen)

Email:zhoubangtao@gmail.com

转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details/27706813

简单介绍部分请參考【Flume NG用户指南】(0)介绍

2 设置

2.1 设置一个Agent

Flume Agent配置存在本地的配置文件里。它是一个Java Properties文件格式的文本文件。一个配置文件里能够配置一个或多个Agent。配置文件包括了一个Agent中每个Source、Sink和Channel的属性,以及它们怎样连接起来形成数据流。

2.1.1 配置各自的组件

每个组件(Source、Sink和Channel)都有name、type以及跟特性type相关联的其它属性集。

比如,一个Avro Source须要一个hostname或者是IP地址以及一个port号去接收数据。

一个Memory Channel的最大队列数(“capacity”),一个HDFS Sink须要知道文件系统的URI。创建文件的路径以及文件循环的频率(“hdfs.rollInternal”)等等。一个组件的全部这些属性都须要被设置在这个Flume Agent所以来的配置文件里。

2.1.2 把各个组件串起来

Flume Agent须要知道载入什么样的组件,以及怎样将这些组件依照循序串起来形成数据流。

这就须要列出Agent中每个Source、Sink和Channel的名字。然后为每个Source和Sink指定连接的Channel。比如,一个Agent从一个叫avroWeb的Avro Source通过一个叫做file-channel的File Channel传输Event到一个叫hdfs-cluster1的HDFS Sink中。这个配置文件就须要包括这些组件的名字,而且file-channel作为avroWeb和hdfs-cluster1共享的Channel。

2.1.3 启动一个Agent

Agent通过一个叫做flume-ng的shell脚本启动。flume-ng位于Flume分发包的bin文件夹下。你须要在命令行指定Agent的名字、配置文件文件夹以及相应的配置文件:

$ bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template

下载Flume Agent就会执行配置的Source和Sink了。

2.1.4 一个简单的样例

这里我们举一个配置文件样例。描写叙述单节点Flume部署。

这个配置文件用户生成Event而且把他们顺序地打印到console上。

# example.conf: A single-node Flume configuration

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1 # Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444 # Describe the sink
a1.sinks.k1.type = logger # Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

这个配置文件定义了一个单独的叫做a1的Agent。a1有一个在44444port上监听数据的Source。一个把Event暂存到Memory的Channel以及一个把Event数据打印到console的Sink。这个配置文件命名了各种各样的组件,然后描写叙述了他们的类型和配置參数。一个给定的配置文件可能定义了多个命名的Agent;当一个给定的Flume进程要被启动时,一个标志会传进去来告诉它究竟哪个命名的Agent要被启动。

基于这个配置文件,我们能够通过下面方式启动Flume:

$ bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console

注意在一个完整的部署中,我们一般会多包括一个配置:--conf=<conf-dir>。<conf-dir>文件夹包括一个叫做flume-env.sh的shell脚本和一个log4j配置文件。

这个样例中我们传入了一个Java选项强制Flume把日志记录在console上,而且不使用定制的环境脚本。

从还有一个shell终端,我们能够telnet 44444port然后发送一个Event:

$ telnet localhost 44444
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
Hello world! <ENTER>
OK

之前的Flume启动终端上就会用日志形式输出传入的Event。

12/06/19 15:32:19 INFO source.NetcatSource: Source starting
12/06/19 15:32:19 INFO source.NetcatSource: Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:44444]
12/06/19 15:32:34 INFO sink.LoggerSink: Event: { headers:{} body: 48 65 6C 6C 6F 20 77 6F 72 6C 64 21 0D Hello world!. }

祝贺你。你已经成功配置并部署了一个Flume Agent。下边的文章更具体的讲述了Agent 的配置。

2.1.5 安装第三方插件

Flume完整的基于插件的架构。

Flume自来了非常多直接可用的Source、Channel、Sink和Serializer。

可是还有非常多第三方的实现是跟Flume分开发行的。

你能够在flume-env.sh中把第三方的jar包加入到FLUME_CLASSPATH变量中来包括定制的组件。可是如今Flume支持一个叫做plugins.d的特殊文件夹。它会自己主动把依照一定格式打包起来的Plugin组装起来。这个能够更方便的管理插件打包,以及更简单的调试和跟踪。尤其是jar包依赖冲突。

2.1.5.1 plugins.d文件夹

plugins.d文件夹位于$FLUME_HOME/plugins.d。在启动时,flume-ng启动脚本查找plugins.d文件夹下符合下面格式的plugin,然后把他们包括到合适的路径上。

2.1.5.2 plugin的文件夹布局

每个在plugins.d文件夹的plugin(事实上就是子文件夹)可以包括三个子文件夹:

  1. lib : plugin的jar
  2. libext : plugin依赖的jar
  3. native : 不论什么须要的本地库,比如.so文件

plugins.d文件夹下两个plugin的样例:

plugins.d/
plugins.d/custom-source-1/
plugins.d/custom-source-1/lib/my-source.jar
plugins.d/custom-source-1/libext/spring-core-2.5.6.jar
plugins.d/custom-source-2/
plugins.d/custom-source-2/lib/custom.jar
plugins.d/custom-source-2/native/gettext.so

2.2 数据採集

Flume支持非常多从不同数据源採集数据的机制

2.2.1 RPC

Flume分发包中的一个Avroclient能够通过Avro RPC机制将一个给定的文件发送给Flume Avro Source。

$ bin/flume-ng avro-client -H localhost -p 41414 -F /usr/logs/log.10

上边的命令会发送/usr/logs/log.10的内容发送到监听那个port的Flume Source上。

2.2.2 运行命令

Flume分发包中有一个exec Source可一个运行一个给定的命令,而且消费的输出。一个输出的一行。比如以'\r'或'\n'或两者结尾的文本。

注:Flume不支持tail作为一个Source。

只是你能够封装tail命令到一个exec Source中从而流化文件。

2.2.3 网络流

Flume支持一下的机制去从经常使用的日志流中读取数据。比如:

  1. Avro
  2. Thrift
  3. Syslog
  4. Netcat

2.3 配置多Agent流

为了使数据跨多个Agent和hop传输。前一个Agent的Sink和当前Agent的Source须要时Avro类型的,而且Sink指向Source的hostname和port。

2.4 合并

日志收集中一个很常见的场景是大量的日志生产client向少量的和存储系统关联的消费端Agent发送数据。比如,从成百上千个Webserver收集日志然后发送到十几个写入HDFS集群的Agent。

这能够通过配置多个第一层的带有Avro Sink的Agent,而且所Avro Sink都指向一个单的Agent的Avro Source上。第二层Agent的Source合并接收过来的数据到单独的Channel中。然后由Sink消费并发送到目的地。

2.5 拆分流(多路输出)

Flume支持多路输出Event到一个或多个目的地。能够通过定义一个流多路输出器。它来复制或选择性路由一个Event到一个或多个Channel中。

上边的样例显示了一个叫“foo”的Agent的一个Source扇出数据流到三个不同的Channel中。

这个扇出能够是复制或者多路输出。

在复制流的情况下,每个Event被发送到三个Channel中。

在多路输出的情况下。一个Event依据它的属性和提前定义值的匹配情况被传送到可用Channel一个子集中,比如,假设一个Event的属性叫做txnType,而且被设置为“customer”,然后它应该被传送到channel1和channel3中。假设被设置为“vendor”。它应该被传送到channel2中。否则channel3中。

这些映射都能够在配置文件里进行配置。

关于Flume的配置请參考配置一文【Flume NG用户指南】(2)配置

作者:周邦涛(Timen)

Email:zhoubangtao@gmail.com

转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details/27706813

【Flume NG用户指南】(1)设置的更多相关文章

  1. 【Flume NG用户指南】(2)构造

    作者:周邦涛(Timen) Email:zhoubangtao@gmail.com 转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details ...

  2. Flume NG Getting Started(Flume NG 新手入门指南)

    Flume NG Getting Started(Flume NG 新手入门指南)翻译 新手入门 Flume NG是什么? 有什么改变? 获得Flume NG 从源码构建 配置 flume-ng全局选 ...

  3. 【翻译】Flume 1.8.0 User Guide(用户指南) Processors

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  4. 【翻译】Flume 1.8.0 User Guide(用户指南) Channel

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  5. 【翻译】Flume 1.8.0 User Guide(用户指南) Sink

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  6. 【翻译】Flume 1.8.0 User Guide(用户指南) source

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  7. 【翻译】Flume 1.8.0 User Guide(用户指南)

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  8. flume1.9 用户指南(中文版)

    概述 Apache Flume是一个分布式,可靠且可用的系统,用于有效地从许多不同的source收集,聚合和移动大量日志数据到集中式数据存储. Apache Flume的使用不仅限于日志数据聚合.由于 ...

  9. 【转】Flume(NG)架构设计要点及配置实践

    Flume(NG)架构设计要点及配置实践   Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合.移动,最后存储到一个中心化数据存储系统中.由原来的Fl ...

随机推荐

  1. CSF 中的应用程序请求路由

    编辑人员注释:本文章由 AzureCAT 团队的 Christain Maritnez 撰写. 应用程序请求路由(简称为 ARR)可能是 Microsoft 使用的技术中讨论得最少但极为重要的技术之一 ...

  2. C语言 HTTP上传文件-利用libcurl库上传文件

    原文  http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...

  3. qwebkit - Open new window after click using QT - Stack Overflow

    qwebkit - Open new window after click using QT - Stack Overflow Open new window after click using QT

  4. swt combo 自动补全

    public class AutoCompleteComboMain {     static final Display display = new Display();     static fi ...

  5. the convertion between string and BlobColumn

    It's hard to find some samples about the convertion between string and BlobColumn.AddBlobData. It's ...

  6. .net 中文显示乱码问题(Chinese display with messy code)

    Case:同样的代码,本地开发环境(local is Chinese Simplify)可以成功运行,但是放到Windows Server 2008 R2(Local is United State) ...

  7. ASP.NET 操作配置文件

    1.配置文件的各种操作 http://www.cnblogs.com/shimeng3344518/archive/2007/04/23/723999.html 2. http://www.jb51. ...

  8. SSIS 连接 PostgreSQL

    因为工作需要,得把psql的表放到SQL Server, 找到一个PGNP(http://www.pgoledb.com/)  的适配器,不过一看要300$就没有去尝试了. 官方倒是有ODBC的驱动. ...

  9. JavaSE学习总结第04天_Java基础语法3

      04.01 选择结构switch语句的格式及其解释 switch语句的格式: switch(表达式) {    case 值1:语句体1;break;    case 值2:语句体2;break; ...

  10. 分布式session

    前端用户请求经过随机分发之后,可能会命中后端任意的Web Server,并且 Web Server 也可能会因为各种不确定的原因宕机.在这种情况下,session 是很难在集群间同步的,而通过将ses ...