需求1:采集本地一个文件夹下文件到hdfs上
定义agent如下:
a1.sources=r1
a1.sinks=k1
a1.channels=c1
a1.sources.r1.type=spooldir
a1.sources.r1.spooldir=/home/hadoop/data/spool_data
a1.channels.c1.type=memory
a1.channels.c1.capacity=10000 //保存在channel中的最大event数
a1.channels.c1.tarasactionCapacity=10000 //每次最多从sources抽取并送到sinks端的event数
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=hdfs://hadoop000:8020/data/flume/spool
a1.sinks.k1.hdfs.batchSize=10 //刷新到hdfs上的event数量,默认值100
a1.sinks.k1.hdfs.fileType=DataStream //可以是SenquenceFile,DataStream,CompressedStream。默认值为SenquenceFile
a1.sinks.k1.hdfs.writeFormat=Text
a1.sinks.k1.hdfs.rollInterval=0 //每隔多长时间,临时文件滚动成目标文件
a1.sinks.k1.hdfs.rollSize=10485760 //当临时文件达到该大小时,滚动成目标文件
a1.sinks.k1.hdfs.rollCount=10000 // 当events数据达到该数量时候,将临时文件滚动成目标文件
a1.sinks.k1.channel=c1
a1.sources.r1.channels=c1
保存为spool.conf文件,然后执行以下命令启动flume:
./flume-ng agent \
--name a1 \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/spool.conf \
-Dflume.root.logger=INFO,console
此时本地目录/home/hadoop/data/spool_data下如果有新的文件产生,则文件内容会被采集到hdfs的相应目录下
----------------------------------------------------------------------------------------------------------
需求2:按分钟收集本地目录下非.txt后缀的文件数据到hdfs上,以文件名格