其具体使用可参考官 http://flume.apache.org/documentation.html,选择Flume Developer Guide开发者模式。(也可在linux目录/flume-1.8.0/docs下查看)
一、案例:监控端口数据
目标:Flume监控一端Console,另一端Console发送消息,使被监控端实时显示。
(1)在/opt/data下创建flume01.conf(Flume Agent配置文件)
在大数据中,想这样的配置文件算小的了。解释一下:
(1) 前三行是创建一个flume采集程序,程序名为a1,同时给程序中的source、sink、channel组件起别名r1、k1、c1。
(2) 接着三行是用来配置source连接的数据源来自什么地方。
a1.sources.r1.type = netcat netcat代表连接的数据源是一个 络端口
a1.sources.r1.bind = localhost 连接的端口绑定的ip地址
a1.sources.r1.port = 44444 连接的端口
(3)接下来是sink将数据发送到的位置。
a1.sinks.k1.type = logger 发送到日志记录中,如果日志在控制台打印,那就在控制台显示
(4)channel缓冲池的相关配置
a1.channels.c1.type = memory 缓冲池是在内存中缓冲的
a1.channels.c1.capacity = 1000 缓冲池最多可以存放多少个event
a1.channels.c1.transactionCapacity = 100 缓冲池一次给sink多少个event
(5)最后两行将一个Flume程序中source和channel,还有channel和sink连接起来
(2)启动flume(一个进程称为一个月agent)
flume-ng agent -n a1 -f flume01.conf -Dflume.root.logger=INFO,console
创建成功,如图:
(3)再开个窗口,给127.0.0.1:44444发数据
首先连接端口(telnet)
先安装telnet工具
yum install -y telnet
再查看127.0.0.1:44444是否被占用
netstat -tunlp | grep 44444
除了被监听着,没有再被占用了。
先开启flume先听端口
使用telnet工具向本机的44444端口发送内容
telnet localhost 44444
成功连接。
(4)输入数据测试
在第二次开启的窗口(telnet)中输入ls
在最先打开的窗口查看到:
看到控制台上Event中有ls传来。
多次测试:
查看第一个窗口:
ctrl+c结束。
此案例必须先开启flume监听再去连接端口。
二、案例:实时读取本地文件到HDFS
目标:实时监控hive日志,并上传到HDFS中
此案例相当于flume的source连接本地文件,sink连接HDFS
(1)创建flume02.conf文件
解释一下:
a2.sources.r2.type = exec exec代表监听的是一个linux的可执行命令
a2.sources.r2.command = tail -F /opt/module/zookeeper/logs
代表监听的命令是tail -F: 监听文件数据动态变化,此时监听的是zookeeper下的logs的zookeeper-root-server-node1.out文件(此处把上面截图的地址修改了)
# Describe the sink
a2.sinks.k2.type = hdfs
a2.sinks.k2.hdfs.path = hdfs://192.168.100.4:9000/flume/%Y%m%d/%H
此句代表上传到hdfs的指定路径下,192.168.100.4:9000为hdfs路径
(2)启动监听
flume-ng agent -n a2 -f flume02.conf -Dflume.root.logger=INFO,console
(3)使用zookeeper
启动zookeeper的同时就会产生logs日志文件。我们设置flume的生成新文件的时间为600(10分钟),十分钟后控制台才会有回应。这样本地文件数据就上传到HDFS上了。
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24799 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!