赞
踩
多个agent的数据流(多级流动)
数据流合并(扇入流)
在做日志收集的时候一个常见的场景就是,大量的生产日志的客户端发送数据到少量的附属于存储子系统的消费者agent。例如,从数百个web服务器中收集日志,它们发送数据到十几个负责将数据写入HDFS集群的agent。
这个可在Flume中可以实现,需要配置大量第一层的agent,每一个agent都有一个avro sink,让它们都指向同一个agent的avro source(强调一下,在这样一个场景下你也可以使用thrift source/sink/client)。在第二层agent上的source将收到的event合并到一个channel中,event被一个sink消费到它的最终的目的地。
数据流复用(扇出流)
Flume支持多路输出event流到一个或多个目的地。这是靠定义一个多路数据流实现的,它可以实现复制和选择性路由一个event到一个或者多个channel。
上面的例子展示了agent foo中source扇出数据流到三个不同的channel,这个扇出可以是复制或者多路输出。在复制数据流的情况下,每一个event被发送所有的三个channel;在多路输出的情况下,一个event被发送到一部分可用的channel中,它们是根据event的属性和预先配置的值选择channel的。 这些映射关系应该被填写在agent的配置文件中。
此处还是用之前搭建的虚拟机进行安装
tar -xvf apache-flume-1.6.0-bin.tar.gz
复制粘贴即可,先测试一下,一会详解配置属性含义
#配置Agent a1 的组件 a1.sources=r1 a1.channels=c1 a1.sinks=s1 #描述/配置a1的r1 a1.sources.r1.type=netcat a1.sources.r1.bind=0.0.0.0 a1.sources.r1.port=44444 #描述a1的s1 a1.sinks.s1.type=logger #描述a1的c1 a1.channels.c1.type=memory a1.channels.c1.capacity=1000 a1.channels.c1.transactionCapacity=100 #为channel 绑定 source和sink a1.sources.r1.channels=c1 a1.sinks.s1.channel=c1
输入nc如果是这样的话
这是没有安装nc,需要安装一下
yum install -y nc
下面开始测试一下flume
nc localhost 44444
hello
nihao
123456789
通过nc请求flume已经返回OK
看一下之前启动flume的窗口,已经收到了
或者通过外部http请求访问对应的ip和端口,比如:http://192.168.199.11:44444/123123
在虚拟机这边,会出现如下提示:
参数 描述
agent 运行一个Flume Agent
–conf,-c 指定配置文件放在什么目录
–conf-file,-f 指定配置文件,这个配置文件必须在全局选项的–conf参数定义的目录下
–name,-n Agent的名称,注意:要和配置文件里的名字一致。
-Dproperty=value 设置一个JAVA系统属性值。常见的:-Dflume.root.logger=INFO,console
参数 | 描述 |
---|---|
agent | 运行一个Flume Agent |
–conf,-c | 指定配置文件放在什么目录 |
–conf-file,-f | 指定配置文件,这个配置文件必须在全局选项的–conf参数定义的目录下 |
–name,-n | Agent的名称,注意:要和配置文件里的名字一致。 |
-Dproperty=value | 设置一个JAVA系统属性值。常见的:-Dflume.root.logger=INFO,console |
示例:./flume-ng agent -n a1 -c …/conf -f …/conf/template.conf -Dflume.root.logger=INFO,console
配置项 | 说明 |
---|---|
channels | 绑定通道 |
type | avro |
bind | 需要监听的主机名或IP |
port | 要监听的端口 |
threads | 工作线程最大线程数 |
selector.* | 选择器配置 |
interceptors.* | 拦截器配置 |
#配置Agent a1 的组件 a1.sources=r1 a1.channels=c1 a1.sinks=s1 #描述/配置a1的source1 a1.sources.r1.type=avro a1.sources.r1.bind=0.0.0.0 a1.sources.r1.port=44444 #描述sink a1.sinks.s1.type=logger #描述内存channel a1.channels.c1.type=memory a1.channels.c1.capacity=1000 a1.channels.c1.transactionCapacity=100 #为channel 绑定 source和sink a1.sources.r1.channels=c1 a1.sinks.s1.channel=c1
./flume-ng agent -n a1 -c ../conf -f ../conf/avrosource.conf -Dflume.root.logger=INFO,console
4. 在flume根目录创建mydata文件夹,在mydata内创建1.txt,写一个Hello然后保存退出
6. 在bin目录执行agent-avro客户端指令:./flume-ng avro-client -H 0.0.0.0 -p 44444 -F …/mydata/1.txt -c …/conf/
可以看到文件内的hello反序列化到Flume中
配置项 | 说明 |
---|---|
channels | 绑定的通道 |
type | exec |
command | 要执行的命令 |
selector.* | 选择器配置 |
interceptors.* | 拦截器列表配置 |
#配置Agent a1 的组件
a1.sources=r1
a1.channels=c1
a1.sinks=
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。