flume 的安装和入门小例子
来源:互联网 发布:炒外汇模拟软件 编辑:程序博客网 时间:2024/06/06 11:03
本文结构 我的环境 CentOS 7
- flume 安装与启动
- flume 的avro小例子
- Spool 的小例子
- Syslogtcp 小例子
1. flume 安装与启动
1.1 下载安装包
访问官网传送门,不信你不点下载apache-flume-1.7.0-bin.tar.gz 安装包。
并在合适路径解压安装包。
//解压命令tar -zxvf apache-flume-1.7.0-bin.tar.gz//修改名字mv apache-flume-1.7.0-bin flume
1.2 配置环境变量
修改 vi /etc/profile 文件 添加环境变量
export FLUME_HOME=/opt/apps/flumeexport PATH=.:$PATH::$FLUME_HOME/bin
注意:/opt/apps/flume 为我解压flume的路径
1.3 安装检测
进入flume的bin目录下 执行命令
flume-ng version
输出:
Flume 1.7.0
Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
Revision: 511d868555dd4d16e6ce4fedc72c2d1454546707
Compiled by bessbd on Wed Oct 12 20:51:10 CEST 2016
From source with checksum 0d21b3ffdc55a07e1d08875872c00523
安装成功
2. flume 的avro小例子
案例: 发送一个文件给flume
2.1 新建avro配置文件
在flume 的conf 文件夹下新建 配置文件 avro.conf
其内容如下:
a1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the sourcea1.sources.r1.type= avroa1.sources.r1.channels = c1a1.sources.r1.bind = 0.0.0.0a1.sources.r1.port = 4141# Describe the sinka1.sinks.k1.type= logger# Use a channel which buffers events in memorya1.channels.c1.type= memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1
2.2 启动flume agent a1
./flume-ng agent -c /opt/apps/flume/conf -f /opt/apps/flume/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console
注意:/opt/apps/flume 是我flume的安装路径
运行成功
[root@iZuf6aefi9w82dwe9g6zllZ bin]# ./flume-ng agent -c /opt/apps/flume/conf -f /opt/apps/flume/conf/avro.conf -n a1-Dflume.root.logger=INFO,console Info: Including Hive libraries found via () for Hive access+ exec /opt/apps/jdk1.8.0_112/bin/java -Xmx20m -Dflume.root.logger=INFO,console -cp '/opt/apps/flume/conf:/opt/apps/flume/lib/*:/lib/*'-Djava.library.path= org.apache.flume.node.Application -f /opt/apps/flume/conf/avro.conf -n a1 … … … 2017-01-04 15:29:02,210 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:119)] Monitored counter group for type: SOURCE, name: r1: Successfully registered new MBean. 2017-01-04 15:29:02,211 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:95)] Component type: SOURCE, name: r1 started 2017-01-04 15:29:02,212 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.source.AvroSource.start(AvroSource.java:259)] Avro source r1 started.
2.3创建指定文件
新打开终端,在flume的conf 目录下 执行(创建test.log文件并写入内容“hello world,abel“)
echo "hello world,abel” > test.log
2.4使用avro-client发送文件
//iZuf6aefi9w82dwe9g6zllZ 为当前的用户名 ./flume-ng avro-client -c /opt/apps/flume/conf -H iZuf6aefi9w82dwe9g6zllZ -p 4141 -F /opt/apps/flume/conf/test.log
如图
此时在fulme启动的控制台,可以看到以下信息,注意最后一行
3. Spool 的小例子
**Spool监测配置的目录下新增的文件,并将文件中的数据读取出来。需要注意两点:
1) 拷贝到spool目录下的文件不可以再打开编辑。
2) spool目录下不可包含相应的子目录(新版本貌似解决了子目录问题)**
3.1创建spool配置文件
在flume 的conf 文件夹下新建 配置文件 spool.conf
内容如下:
注意:/root/logs 为我存放被监控的日志文件目录
a1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the sourcea1.sources.r1.type = spooldira1.sources.r1.channels = c1a1.sources.r1.spoolDir =/root/logsa1.sources.r1.fileHeader = true# Describe the sinka1.sinks.k1.type = logger# Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1
3.2 启动flume agent a1
./flume-ng agent -c /opt/apps/flume/conf -f /opt/apps/flume/conf/spool.conf -n a1 -Dflume.root.logger=INFO,console
3.3 追加文件到/root/logs目录
新建文件 test.log 并写入内容“hello world“ ,然后将test.log 追加到被监控目录下。
vi test.log mv test.log /root/logs
此时会在flume的控制台 看到如下输出:(右边为输出)
4.Syslogtcp小例子
Syslogtcp监听TCP的端口做为数据源
4.1创建agent 配置文件
在flume 文件下的conf 文件夹下创建syslog_tcp.conf 文件内容如下:
a1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the sourcea1.sources.r1.type = syslogtcpa1.sources.r1.port = 5140a1.sources.r1.host = localhosta1.sources.r1.channels = c1# Describe the sinka1.sinks.k1.type = logger# Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1
4.2 启动flume 并发送数据
启动命令
./flume-ng agent -c /opt/apps/flume/conf -f /opt/apps/flume/conf/syslog_tcp.conf -n a1 -Dflume.root.logger=INFO,console
发送数据
echo "hello idoall.org syslog" | nc localhost 5140
控制台输出
除了以上的展示外 flume 还有很多种配置,例如:
案例:Exec
exec source 运行时, 不停机直接修改 conf 文件 ,修改配置的监控文件名称,flume 监控文件改变为新配置的文件。(即可不停机的修改监控文件。)
EXEC执行一个给定的命令获得输出的源,如果要使用tail命令,必选使得file足够大才能看到输出内容。
实时监控/opt/apps/logs/tail4.log 文件。并将结果输出到/opt/apps/tmp 目录下
a1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the sourcea1.sources.r1.type = execa1.sources.r1.shell = /bin/bash -ca1.sources.r1.channels = c1a1.sources.r1.command = tail -F /opt/apps/logs/tail4.log# Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# sinka1.sinks.k1.type = file_rolla1.sinks.k1.channel = c1#a1.sinks.k1.sink.rollInterval=0a1.sinks.k1.sink.directory = /opt/apps/tmp
案例:JSONHandler
读取指定url 的request 的json 信息,包含 headers 信息和body 信息
案例:Hadoop sink
读取信息到hdfs
案例:Replicating Channel Selector(多 Channel)
Flume支持Fan out流从一个源到多个通道。有两种模式的Fan out,分别是复制和复用。在复制的情况下,流的事件被发送到所有的配置通道。在复用的情况下,事件被发送到可用的渠道中的一个子集。Fan out流需要指定源和Fan out通道的规则。
案例:Multiplexing Channel Selector(多channel)
根据header中不同的条件分布到不同的channel上
案例:Load balancing Sink Processor(多sink)
load balance type和failover不同的地方是,load balance有两个配置,一个是轮询,一个是随机。两种情况下如果被选择的sink不可用,就会自动尝试发送到下一个可用的sink上面。
案例还有很多,这些案例的详细内容均来自 参考
参考:http://www.aboutyun.com/thread-8917-1-1.html
- flume 的安装和入门小例子
- Flume的安装和简单的入门实例
- flume入门例子
- Flume的安装和配置
- Flume的安装和测试
- Flume的安装和测试
- flume的安装和使用
- ant 入门的小例子
- JSF入门的小例子
- 数组的入门小例子
- perl入门的小例子
- Flume-1.7.0的安装和配置
- flume的安装和简单使用
- 从两个小例子开始学习flume
- Flume安装和配置
- flume简介和安装
- Flume1.5.0入门:安装、部署、及flume的案例
- Flume1.5.0入门:安装、部署、及flume的案例
- windows安装mysql5.7.16
- 开发基础(一)C语言之数据介绍
- css示例学习----图片轮播
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- EF基础知识
- flume 的安装和入门小例子
- Java:计算器小程序
- Java内存模型——顺序一致性保证
- Simplify Path
- UNIX多线程编程(2) 线程互斥
- 判断一个字符串的所有字符是否都是唯一的(使用hash表方法)
- 1.4
- 超越影像——RSNA 2016参展随感 (一)
- Leetcode-456. 132 Pattern