欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

flume 安装 博客分类: flume flume 安装 

程序员文章站 2024-03-12 18:57:44
...

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无法恢复


flume 安装
            
    
    博客分类: flume flume 安装 

 

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的配置文件中,也支持环境变量

例如,下面的配置方式:
flume 安装
            
    
    博客分类: flume 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

flume 安装
            
    
    博客分类: flume flume 安装 
 (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

  • flume 安装
            
    
    博客分类: flume flume 安装 
  • 大小: 18.5 KB
  • flume 安装
            
    
    博客分类: flume flume 安装 
  • 大小: 16 KB
  • flume 安装
            
    
    博客分类: flume flume 安装 
  • 大小: 136.8 KB
相关标签: flume 安装