配置单个组件

定义流后,需要配置source、sink和channel各个组件的属性。配置的方式是以相同的分层命名空间的方式,你可以设置各个组件的类型以及基于其类型特有的属性。

  1. # properties for sources
  2. <Agent>.sources.<Source>.<someProperty> = <someValue>
  3.  
  4. # properties for channels
  5. <Agent>.channel.<Channel>.<someProperty> = <someValue>
  6.  
  7. # properties for sinks
  8. <Agent>.sources.<Sink>.<someProperty> = <someValue>

每个组件都应该有一个 type 属性,这样Flume才能知道它是什么类型的组件。每个组件类型都有它自己的一些属性。所有的这些都是根据需要进行配置。在前面的示例中,我们已经构建了一个avro-appserver-src-1到hdfs-sink-1的数据流,下面的例子展示了如何继续给这几个组件配置剩余的属性。

  1. # 列出所有的组件
  2. agent_foo.sources = avro-AppSrv-source
  3. agent_foo.sinks = hdfs-Cluster1-sink
  4. agent_foo.channels = mem-channel-1
  5.  
  6. # 将source和sink与channel相连接
  7. #(省略)
  8.  
  9. # 配置avro-AppSrv-source的属性
  10. agent_foo.sources.avro-AppSrv-source.type = avro # avro-AppSrv-source 的类型是Avro Source
  11. agent_foo.sources.avro-AppSrv-source.bind = localhost # 监听的hostname或者ip是localhost
  12. agent_foo.sources.avro-AppSrv-source.port = 10000 # 监听的端口是10000
  13.  
  14. # 配置mem-channel-1的属性
  15. agent_foo.channels.mem-channel-1.type = memory # channel的类型是内存channel
  16. agent_foo.channels.mem-channel-1.capacity = 1000 # channel的最大容量是1000
  17. agent_foo.channels.mem-channel-1.transactionCapacity = 100 # source和sink每次从channel写入和读取的Event数量
  18.  
  19. # 配置hdfs-Cluster1-sink的属性
  20. agent_foo.sinks.hdfs-Cluster1-sink.type = hdfs # sink的类型是HDFS Sink
  21. agent_foo.sinks.hdfs-Cluster1-sink.hdfs.path = hdfs://namenode/flume/webdata # 写入的HDFS目录路径
  22.  
  23. #...