实验2
监控指定目录,当目录有新的日志产生时,把日志保存到HDFS。
6.1编写配置文件
将配置文件放在指定的目录中:比如放在 ~/soft/flume/agent
$cd ~/soft/flume/agent
编写配置文件
$nano agent2.conf
输入以下内容:
# 指定Agent的组件名称
a2.sources = r2
a2.sinks = k2
a2.channels = c2
# 指定 source
a2.sources.r2.type = exec
#实时查看日志文件,查看日志命令--tail -f 日志文件名.log
a2.sources.r2.command = tail -F /home/h/1.log
#/bin/bash -c 后面接 命令#
a2.sources.r2.shell = /bin/bash -c
# 指定 sink
a2.sinks.k2.type = hdfs
#注意修改node1主机名或者直接用ip地址
a2.sinks.k2.hdfs.path = hdfs://node1:9820/flume/%Y%m%d/%H%M/%S
#上传文件的前缀
a2.sinks.k2.hdfs.filePrefix = logs-
#是否按照时间滚动文件夹
a2.sinks.k2.hdfs.round = true
#多少时间单位创建一个新的文件夹
a2.sinks.k2.hdfs.roundValue = 1
#重新定义时间单位
a2.sinks.k2.hdfs.roundUnit = minute
#是否使用本地时间戳
a2.sinks.k2.hdfs.useLocalTimeStamp = true
#积攒多少个 Event 才 flush 到 HDFS 一次
a2.sinks.k2.hdfs.batchSize = 3
#设置文件类型,可支持压缩
a2.sinks.k2.hdfs.fileType = DataStream
#多久生成一个新的文件
a2.sinks.k2.hdfs.rollInterval = 600
#设置每个文件的滚动大小
a2.sinks.k2.hdfs.rollSize = 134217700
#文件的滚动与 Event 数量无关
a2.sinks.k2.hdfs.rollCount = 0
#最小冗余数
a2.sinks.k2.hdfs.minBlockReplicas = 1
# 指定channels
a2.channels.c2.type = memory
a2.channels.c2.capacity = 1000
a2.channels.c2.transactionCapacity = 100
# Bind the source and sink to the channel
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2
6.2启动Flume Agent命令
$ flume-ng agent -c ~/soft/flume/conf -f ~/soft/flume/agent/agent2.conf -name a2 -Dflume.root.logger=INFO,console
6.3测试
另外启动一个终端,发送些数据到1.log
$ echo "something different 44" >> 1.log
$ echo "something different 55" >> 1.log
在hdfs里面查看是否生成了文件
看到了每一分钟会生成一个数据目录,文件名的前缀为logs- 加上毫秒的时间戳(13位).tmp,文件内容为刚才一分钟内给1.log发送的数据。

