Flume官网
记录:exec数据源中的command参数可以写一条任意运行的Linux中的命令
Flume简介
什么是Flume
flume主要做的是日志采集,是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统
Flume 运行的核心是 Agent。Flume以agent为最小的独立运行单位。一个agent就是一个JVM。它是一个完整的数据收集工具,含有三个核心组件,分别是
source、 channel、 sink。通过这些组件, Event 可以从一个地方流向另一个地方
其中channel里面是一个一个event
flume可靠性的体现:(event必须传到了sink或者下一个agent之后才会结束)
Flume 使用事务性的方式保证传送Event整个过程的可靠性。 Sink 必须在Event 已经被传达到下一站agent里,又或者,已经被存入外部数据目的地之后,才能把 Event 从 Channel 中 remove 掉
Flume的几种连接方式
Flume的使用
测试flume(监控一个目录,并将记录打印到控制台)
监控一个目录,将数据打印出来
这里我们做的是监控一个目录,并将下面的数据都打印出来,所以我们这里用到的数据源应该是:
Spooling Directory Source
首先配置数据源source(监控的数据源目录要提前有才行)
来到官网,可以看到这边有许多的数据源可以选择
进入我们所需要的从“目录”来的数据源的网页(我们监控的是一个目录),图中标黑的是必选项,剩下的根据自身的需求进行选择
所以这里我们配置的source为:
a1.sources.r1.type=spooldir
a1.sources.r1.spoolDir=/opt/datas/flume_data
接下来配置sink
我们要做的是将出现的变化打印到控制台
所以这里我们选择的是Logger Sink
所以我们这里sink的配置为:
a1.sink.k1.type=logger
接下来配置channel
这里我们将channel的类型设置为memory,表示将event缓存在内存中
所以我们这里channel的配置为
a1.channel.c1.type=memory
接下来就是组装,指定sources的channels和sinks的channel
完整的配置文件:
# 给agent起一个名字a1
# 再分别给source、channel、sink起名字
a1.sources=r1
a1.channel=c1
a1.sink=k1
# 分别对source、channel、sink进行配置
# 配置source
# 将source的类型指定为spooldir,用于监听一个目录下文件的变化
# 因为每个组件可能会出现相同的属性名称,所以在对每个组件进行配置的时候
# 需要加上 agent的名字.sources.组件的名字.属性 = 属性值
a1.sources.r1.type=spooldir
a1.sources.r1.spoolDir=/opt/datas/flume_data
# 配置sink
# 使用logger作为sink的组件,可以将收集到的数据直接打印到控制台
a1.sink.k1.type=logger
# 配置channel
# 将channel的类型设置为memory,表示将event缓存在内存中
a1.channel.c1.type=memory
# 组装
# 将sources的channels属性指定为c1
a1.sources.r1.channels=c1
# 将sinks的channel属性指定为c1
a1.sinks.k1.channel=c1
启动agent(这里的a1是agent的名称)
flume-ng agent -n a1 -f /opt/datas/flume/spoolingtest.conf -Dflume.root.logger=DEBUG,console
成功监控到这一个目录:
接下来我们对监控的目录下写入一些文件,观察flume监控的变化(监控的目录下的文件发生了变化之后会自动加上后缀,可以自己修改,默认是"COMPLETED"),我们写入了一个文件,并在文件里面简单写入几个数字
可以看到这边已经把我们所监控的目录的变化输出了出来
左边的1-8是我们写入的数字,右边输出的是31-38,代表着我们输入的数字的十六进制
监控目录下的文件到HDFS
配置文件:
a1.sources=r1
a1.sinks=k1
a1.channels=c1
a1.sources.r1.channels=c1
a1.sources.r1.type=spooldir
a1.sources.r1.spoolDir=/opt/datas/flume_data
a1.sinks.k1.channel=c1
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=/flume
a1.channels.c1.type=memory
监控成功,并且在监控的目录下添加内容
发现在hdfs上出现了监控的内容变化
感谢阅读,我是啊帅和和,一位大数据专业大四学生,祝你快乐。