Flume实例:监控本地文件夹并写入到HDFS中(四)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/RivenDong/article/details/102651815

1. 配置文件介绍

下面我将以官方文档中给出的一个例子介绍一下FLume的配置文件。

它描述了一个单节点Flume部署。该配置允许用户生成事件,然后将它们记录到控制台。

# example.conf: A single-node Flume configuration

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# Describe the sink
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

这个配置定义了一个名为a1的代理。a1有一个监听端口44444上的数据的源、一个缓冲内存中事件数据的通道和一个将事件数据记录到控制台的接收器。配置文件命名各个组件,然后描述它们的类型和配置参数。一个给定的配置文件可以定义几个指定的代理;当启动给定的Flume进程时,将传递一个标志,告诉它要显示哪个指定的代理。

2. 准备工作

实例任务:
监控本地文件夹:当文件夹的文件改变时,把改变内容加载到指定的HDFS文件夹。
创建 monitor.conf 文件:

# agent name
agent.sources = source1
agent.sinks = sink1
agent.channels = channel1
# Spooling Directory
# set source1
agent.sources.source1.type = spooldir
agent.sources.source1.spoolDir = /home/hadoop/tmpfile/logdfs
agent.sources.source1.channels = channel1
agent.sources.source1.fileHeader = false
agent.sources.source1.interceptors = i1
agent.sources.source1.interceptors.i1.type = timestamp
agent.sources.source1.deletePolicy = immediate
# set sink1
agent.sinks.sink1.type = hdfs
agent.sinks.sink1.hdfs.path = /input
agent.sinks.sink1.hdfs.fileType = DataStream
agent.sinks.sink1.hdfs.writeFormat = TEXT
agent.sinks.sink1.hdfs.rollInterval = 1
agent.sinks.sink1.channel = channel1
agent.sinks.sink1.hdfs.filePrefix = %Y-%m-%d
# set channel1
agent.channels.channel1.type = file
agent.channels.channel1.checkpoinDir = /home/hadoop/tmpfile/logdfstmp/point
agent.channels.channel1.dataDirs = /home/hadoop/tmpfile/logdfstmp

3. 开始测试

启动hadoop集群,然后创建logdfs文件夹,并启动monitor.conf程序:

mkdir /home/hadoop/tmpfile/logdfs
flume-ng agent -n agent -c conf -f monitor.conf

在这里插入图片描述

下面我们,打开另一个终端,进入/home/hadoop/tmpfile/logdfs 目录中,在该目录中通过vi工具创建一个新的文件,并写入内容后保存退出。
在这里插入图片描述

然后在其余节点上查看HDFS中的内容,是否发生改变:

hadoop fs -cat /input/*

在这里插入图片描述
这些是我刚刚在logdfs目录下创建文件写入的内容,可以看到被写入到了hdfs中。
在这里插入图片描述

扫描二维码关注公众号,回复: 7592429 查看本文章

通过上图可以看到,我写了两次文件,每次保存都会在hdfs中生成一个对应的文件。

猜你喜欢

转载自blog.csdn.net/RivenDong/article/details/102651815