1. 上期补充
[xiaokang@hadoop ~]$ flume-ng agent -n a1 -c /opt/software/flume-1.9.0/conf/ -f flume/telnet-logger.properties -Dflume.root.logger=INFO,console
# 此处很重要,但在上一期教程中我没有解释
# -n a1 指定我们这个 agent 的名字
# -c /opt/software/flume-1.9.0/conf/ 指定 flume-1.9.0 自身的配置文件所在目录
# -f flume/telnet-logger.properties 指定我们所描述的采集方案
# -Dflume.root.logger=INFO,console 输出打印到控制台
2. 前期准备
hadoop单机伪分布式
flume-1.9.0
3. 命令操作
[xiaokang@hadoop ~]$ vim flume/spooldir-hdfs.properties
#命名组件
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#source:
##注意:不能往监控目录中丢重复同名文件
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /home/xiaokang/logs
a1.sources.r1.fileHeader = true
# sink:
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute
#文件的滚动:
#roll控制写入hdfs文件,以何种方式进行滚动
a1.sinks.k1.hdfs.rollInterval = 3#以时间间隔
a1.sinks.k1.hdfs.rollSize = 20#以文件大小
a1.sinks.k1.hdfs.rollCount = 5#以event个数
#如果三个都配置,谁先满足谁触发滚动
#如果不想以某种属性滚动,设置为0即可
#默认值 rollInterval:30s rollSize:1024bytes rollCount:10
a1.sinks.k1.hdfs.batchSize = 1
a1.sinks.k1.hdfs.useLocalTimeStamp = true
a1.sinks.k1.hdfs.fileType = DataStream#生成的文件类型,默认是Sequencefile,可用DataStream,则为普通文本
#channels
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000#默认该通道中最大的可以存储的event数量
a1.channels.c1.transactionCapacity = 100#每次最大可以从source中拿到或者送到sink中的event数量
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
[xiaokang@hadoop ~]$ start-yarn.sh
[xiaokang@hadoop ~]$ start-dfs.sh
[xiaokang@hadoop ~]$ flume-ng agent -n a1 -c /opt/software/flume-1.9.0/conf/ -f flume/spooldir-hdfs.properties -Dflume.root.logger=INFO,console
在另一个会话框内输入以下命令:
# 这里我预先准备了一个log.txt
[xiaokang@hadoop ~]$ cp log.txt logs
打开namenode的web端,如图所示,说明已采集到hdfs