flume 安装 博客分类: flume 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个步骤:
- 给当前的agent起个名字(此处是hd1)
- 配置agent的source,channel, sink三个组件,每个组件都有名字和类型,以及自己的额外属性;
- 关联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
上一篇: Java字母加数字组合比较大小
推荐阅读
-
flume 安装 博客分类: flume flume 安装
-
flume 源码编译 和 inteallij IDEA远程调试 博客分类: flume flume源码编译
-
oracle的安装 博客分类: 数据库 oracle安装
-
dotCms的安装部署一 博客分类: dotCMS学习系列 cmsdotcms安装部署
-
mysql 源码安装 ( ncurses 找不到) 博客分类: exceptionmysql mysql源码安装ncurses
-
Jenkins(一) 安装 博客分类: mavenjenkinsLinux jenkins安装mavenlinux
-
flume 对接spark streaming 博客分类: flume flume对接spark streaming
-
dotCms的安装部署二 博客分类: dotCMS学习系列 cmsdotcms安装部署学习
-
influxdb安装 博客分类: influxdb influxdb安装
-
flume ExecSource 支持获取获取指定列数据 博客分类: flume flume ExecSource 支持获取获取指定列数据