flume 安装

1.什么是flume?

    分布式的海量日志的收集,聚合,移动,传输的框架:

  • fulme Agent是一个jvm进程,包括Source, Channel, Sink三部分。
  • flume event是数据流中的一个基本单位
  • Source接收并且消费外部数据源传递过来的events,Channel用于中间的存储,Sink做数据输出。外部数据源发送数据到flume,必须按照Source支持的格式发,例如Avro Source接收的是Avro events(可能是外部的avro client 或 avro sink发来的数据)
  • 复杂的流:flume支持多跳的流(多个agent连接到一起),扇入,扇出,上下文路由,备份路由
  • 可靠性保证:events是保存在agent的channel中的,这些events会被分发到先一个agent或者是终端存储(例如hdfs),这些events只有当它们被下一个agent的channel或者终端存储保存后,才会从前一个channel中删除掉
  • 可恢复性: file channel 保存在本地文件系统上;memory channel 保存在内存中,它更快,但是agent挂掉,内存中的events无法恢复


 

2.为flume社区做贡献或者提交bug的网址

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

 

3.flume 安装

   (1)下载flume 1.8版本(注意:flume 1.8 需要 java 1.8 or later)

 

   (2)修改conf下的flume-conf.properties

 

hd1.sources=s1
hd1.sources.s1.type=netcat
hd1.sources.s1.bind=localhost
hd1.sources.s1.port=44444

hd1.channels=c1
hd1.channels.c1.type=memory
hd1.channels.c1.capacity=1000
hd1.channels.c1.transcationCapacity=100

hd1.sinks=sk1
hd1.sinks.sk1.type=logger

#把source 和 sink 关联到channel上
#1个source可以对应多个channel(重点)
hd1.sources.s1.channels=c1

#一个sink只对应1个sink(重点)
hd1.sinks.sk1.channel=c1

 

 

    配置文件主要分为3个步骤:

  1. 给当前的agent起个名字(此处是hd1)
  2. 配置agent的source,channel, sink三个组件,每个组件都有名字和类型,以及自己的额外属性;
  3. 关联source -> channels (1个source可以有多个channels) 和 sink  -> channel (1个channel只能有1个sink)

   (3)启动命令:

    -n指定agent的名字(和配置文件里的一致,否则启动后会发现不报错,但是没有44444端口),命令不要写错,-D后面的参数是小写(否则不输出到屏幕)

flume-ng agent -n hd1 -c /data/apache-flume-1.8.0-bin/conf/ -f /data/apache-flume-1.8.0-bin/conf/flume-conf.properties -Dflume.root.logger=INFO,console

 

4.在flume的配置文件中,也支持环境变量

例如,下面的配置方式:

 

启动的命令是(注意一定要 -D 指定 -DpropertiesImplementation):

 

 NC_PORT=44444 flume-ng agent -n hd1 -c /data/apache-flume-1.8.0-bin/conf/ -f /data/apache-flume-1.8.0-bin/conf/flume-conf.properties -Dflume.root.logger=INFO,console  

 -DpropertiesImplementation=org.apache.flume.node.EnvVarResolverProperties

 

5.--no-reload-conf参数默认是false,表示配置文件发生变更就会重新加载配置文件

测试流程:

(1)启动flume

(2)telnet localhost 44444 ( 发测试信息,不断开)

(3)修改配置文件,把端口号改为44445

(4)等待1s左右,flume会重新加载配置文件,端口号改为新的44445


 (5)此时(2)中的telnet一直未挂关闭(端口是44444),继续发信息,屏幕上依然可以输出接收到的信息

 (6)netstat -nptl | grep 44444 发现端口已经不在了,netstat -nptl | grep 44445 变成了新的端口在发数据

 

通过(5)和(6)可知,改变了配置,flume自动加载了配置,不影响尚未关闭的原来的服务(source端的接收,和sink端的输出未受影响)

6.一些flume用到的java参数

-Dflume.root.logger=DEBUG,console 

-Dorg.apache.flume.log.printconfig=true

-Dorg.apache.flume.log.rawdata=true

猜你喜欢

转载自coderlxl201209164551.iteye.com/blog/2415715