水槽架构及使用例子

  

水槽架构及核心组件

  
 <代码>(1)源收集负责从什么地方采集数据
  (2)渠道记录
  (3)沉输出 
  

官方文档

  http://flume.apache.org/FlumeUserGuide.html

  

http://flume.apache.org/FlumeUserGuide.html starting-an-agent   

水槽使用思路

  

使用水槽的关键就是写配置文件

  
  

(1)配置源

  

(2)配置Channerl

  

(3)配置水槽

  

(4)把以上三个组件串起来

     

样例

  

样例1:从指定网络端口采集数据输出到控制台

  

代码实现:

  
 <代码> #的例子。配置:一个单节点水槽配置
  
  #名称的组件在这个代理
  a1。=r1来源
  a1。水槽=k1
  a1。渠道=c?
  
  #描述/配置源
  a1.sources.r1。类型=netcat
  a1.sources.r1。绑定=localhost
  a1.sources.r1。端口=44444
  
  #描述沉
  a1.sinks.k1。类型=记录器
  
  #使用一个通道在内存中缓冲事件
  a1.channels.c1。类型=内存
  a1.channels.c1。能力=1000
  a1.channels.c1。transactionCapacity=100
  
  #绑定源和汇的通道
  a1.sources.r1。渠道=c?
  a1.sinks.k1。通道c1= 
  

启动代理/h4>   

http://flume.apache.org/FlumeUserGuide.html starting-an-agent   

 <代码> bin/flume-ng代理- n美元agent_name配置- f - c conf/flume-conf.properties。模板-Dflume.root.logger=INFO,控制台 
  
  

- n和- name同样含义,为代理名称

  

- c和相依同样含义,为指定一个配置文件

  

-Dflume.root。记录器=INFO,控制台在控制台输出执行信息

     

使用telnet进行测试

  
 <代码> telnet localhost 44444  
  

输出结果分析

  
 <代码>事件:{标题:{}的身体:68 65 6 c 6 c 6 f 0 d你好} 
  

事件是水槽数据传输的基本单元

  

事件=可选的标题+字节数组

  

样例2:监控一个文件实时采集新增的数据输出到控制台

  

代理选型

  

执行源+记忆频道+记录器水槽

  

执行源文档地址

  
  

http://flume.apache.org/FlumeUserGuide.html exec-source      

代码实现

  
 <代码> #名称的组件在这个代理
  a1。=r1来源
  a1。水槽=k1
  a1。渠道=c?
  
  #描述/配置源
  a1.sources.r1。类型=执行
  a1.sources.r1.command=tail - f/var/log/test.log
  a1.sources.r1。shell=/bin/sh - c
  
  #描述沉
  a1.sinks.k1。类型=记录器
  
  #使用一个通道在内存中缓冲事件
  a1.channels.c1。类型=内存
  a1.channels.c1。能力=1000
  a1.channels.c1。transactionCapacity=100
  
  #绑定源和汇的通道
  a1.sources.r1。渠道=c?
  a1.sinks.k1。通道c1= 
  

样例3:将端服务器日志实时采集到B端服务器

  

技术选型

  
 <代码>执行源+记忆频道+ avro下沉
  avro源+记忆频道+记录器水槽 
  

代码实现

  
一个端服务器
  
 <代码> exec-memory-avro。=exec-source来源
  exec-memory-avro。水槽=avro-sink
  exec-memory-avro。渠道=记忆频道
  
  exec-memory-avro.sources.exec-source。类型=执行
  exec-memory-avro.sources.exec-source.command=tail - f/home/hadoop/data/data.log
  exec-memory-avro.sources.exec-source。shell=/bin/sh - c
  
  exec-memory-avro.sinks.avro-sink。类型=avro
  exec-memory-avro.sinks.avro-sink。主机名=hadoop000
  exec-memory-avro.sinks.avro-sink。端口=44444
  
  exec-memory-avro.channels.memory-channel。类型=内存
  
  exec-memory-avro.sources.exec-source。渠道=记忆频道
  exec-memory-avro.sinks.avro-sink。频道=记忆频道 
  
B端服务器
  
 <代码> avro-memory-logger。=avro-source来源
  avro-memory-logger。水槽=logger-sink
  avro-memory-logger。渠道=记忆频道
  
  avro-memory-logger.sources.avro-source。类型=avro
  avro-memory-logger.sources.avro-source。绑定=hadoop000
  avro-memory-logger.sources.avro-source。端口=44444
  
  avro-memory-logger.sinks.logger-sink。类型=记录器
  
  avro-memory-logger.channels.memory-channel。类型=内存
  
  avro-memory-logger.sources.avro-source。渠道=记忆频道
  avro-memory-logger.sinks.logger-sink。频道=记忆频道 

水槽架构及使用例子