天天看点

Flume学习之路 (三)Flume的配置方式一、单一代理流配置二、单代理多流配置三、配置多代理流程四、多路复用流

http://flume.apache.org/FlumeUserGuide.html#avro-source

通过一个通道将来源和接收器链接。需要列出源,接收器和通道,为给定的代理,然后指向源和接收器及通道。一个源的实例可以指定多个通道,但只能指定一个接收器实例。格式如下:

实例解析:一个代理名为agent_foo,外部通过avro客户端,并且发送数据通过内存通道给hdfs。在配置文件foo.config的可能看起来像这样:

案例说明:这将使事件流从avro-appserver-src-1到hdfs-sink-1通过内存通道mem-channel-1。当代理开始foo.config作为其配置文件,它会实例化流。

配置单个组件

定义流之后,需要设置每个源,接收器和通道的属性。可以分别设定组件的属性值。

“type”属性必须为每个组件设置,以了解它需要什么样的对象。每个源,接收器和通道类型有其自己的一套,它所需的性能,以实现预期的功能。所有这些,必须根据需要设置。在前面的例子中,从hdfs-sink-1中的流到HDFS,通过内存通道mem-channel-1的avro-appserver-src-1源。下面是 一个例子,显示了这些组件的配置。

通过flume来监控一个目录,当目录中有新文件时,将文件内容输出到控制台。

创建一个test01.conf的文件:

启动命令

测试 Flume

重新打开一个终端,我们将123.log移动到logs目录

原始的Flume终端将在日志消息中输出事件:

案例2:实时模拟从web服务器中读取数据到hdfs中

此处使用 exec source 详细参考 上一节里面的 2.3 Exec Source 介绍

单个Flume代理可以包含几个独立的流。你可以在一个配置文件中列出多个源,接收器和通道。这些组件可以连接形成多个流。

可以连接源和接收器到其相应的通道,设置两个不同的流。例如,如果需要设置一个agent_foo代理两个流,一个从外部Avro客户端到HDFS,另外一个是tail的输出到Avro接收器,然后在这里是做一个配置。

设置一个多层的流,需要有一个指向下一跳avro源的第一跳的avro 接收器。这将导致第一Flume代理转发事件到下一个Flume代理。例如,如果定期发送的文件,每个事件(1文件)AVRO客户端使用本地Flume 代理,那么这个当地的代理可以转发到另一个有存储的代理。

配置如下:

Weblog agent config:

HDFS agent config:

这里连接从weblog-agent的avro-forward-sink 到hdfs-agent的avro-collection-source收集源。最终结果从外部源的appserver最终存储在HDFS的事件。

创建一个case_avro.conf的文件:

创建一个case_avro_sink.conf的文件:

说明:case_avro_sink.conf是前面的Agent,case_avro.conf是后面的Agent

先启动Avro的Source,监听端口

再启动Avro的Sink

可以看到已经建立连接

Flume学习之路 (三)Flume的配置方式一、单一代理流配置二、单代理多流配置三、配置多代理流程四、多路复用流

在Avro Sink上生成测试log

查看结果:

Flume学习之路 (三)Flume的配置方式一、单一代理流配置二、单代理多流配置三、配置多代理流程四、多路复用流

Flume支持扇出流从一个源到多个通道。有两种模式的扇出,复制和复用。在复制流的事件被发送到所有的配置通道。在复用的情况下,事件被发送到合格的渠 道只有一个子集。扇出流,需要指定源和扇出通道的规则。这是通过添加一个通道“选择”,可以复制或复用。再进一步指定选择的规则,如果它是一个多路。如果你 不指定一个选择,则默认情况下它复制。

复用的选择集的属性进一步分叉。这需要指定一个事件属性映射到一组通道。选择配置属性中的每个事件头检查。如果指定的值相匹配,那么该事件被发送到所有的通道映射到该值。如果没有匹配,那么该事件被发送到设置为默认配置的通道。

映射允许每个值通道可以重叠。默认值可以包含任意数量的通道。下面的示例中有一个单一的流复用两条路径。代理有一个单一的avro源和连接道两个接收器的两个通道。

“State”作为Header的选择检查。如果值是“CA”,然后将其发送到mem-channel-1,如果它的“AZ”的,那么jdbc- channel-2,如果它的“NY”那么发到这两个。如果“State”头未设置或不匹配的任何三个,然后去默认的mem-channel-1通道。

case_replicate_sink.conf

case_replicate_s1.conf

case_replicate_s2.conf

先启动Avro的Source,监听端口

生成测试log

case_multi_sink.conf

case_ multi _s1.conf

case_ multi _s2.conf

根据配置文件生成测试的header 为state的POST请求