定义流
要在单个Agent中定义流,你需要通过channel连接source和sink。需要在配置文件中列出所有的source、sink和channel,然后将source和sink指向channel。一个source可以连接多个channel,但是sink只能连接一个channel。格式如下:
- # 列出Agent的所有Source、Channel、Sink
- <Agent>.sources = <Source>
- <Agent>.sinks = <Sink>
- <Agent>.channels = <Channel1> <Channel2>
- # 设置Channel和Source的关联
- <Agent>.sources.<Source>.channels = <Channel1> <Channel2> ...
- # 设置Channel和Sink的关联
- <Agent>.sinks.<Sink>.channel = <Channel1>
例如,一个叫做agent_foo的Agent从外部avro客户端读取数据并通过内存channel将其发送到HDFS(准确说并不是通过内存channel发送的数据,而是使用内存channel缓存,然后通过HDFS Sink从channel读取后发送的),它的配置文件应该这样配:
- # 列出Agent的所有source、sink和channel
- agent_foo.sources = avro-appserver-src-1
- agent_foo.sinks = hdfs-sink-1
- agent_foo.channels = mem-channel-1
- agent_foo.sources.avro-appserver-src-1.channels = mem-channel-1 # 指定与source avro-appserver-src-1 相连接的channel是mem-channel-1
- agent_foo.sinks.hdfs-sink-1.channel = mem-channel-1 # 指定与sink hdfs-sink-1 相连接的channel是mem-channel-1
通过上面的配置,就形成了[avro-appserver-src-1]->[mem-channel-1]->[hdfs-sink-1]的数据流,这将使Event通过内存channel(mem-channel-1)从avro-appserver-src-1流向hdfs-sink-1,当Agent启动时,读取配置文件实例化该流。
当前内容版权归 liyifeng 译 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 liyifeng 译 .