需求:定义一个采集文件夹的数据并存放到HDFS上的Flume
分析:
Source spooldir
Channel file
Sink HDFS
#agent1表示代理名称,一台服务器上的代理名称最好不同
agent1.sources=source1 #source的名称为source1
agent1.sinks=sink1 #sink的名称为sink1
agent1.channels=channel1 #channel的名称为channel1
#配置source1
agent1.sources.source1.type=spooldir #spooldir表示监控的是本地的一个目录
agent1.sources.source1.spoolDir=/opt/data/flume_data/flume_source_monitor #监控的目录路径
#配置sink1
agent1.sinks.sink1.type=hdfs #采集到的数据会sink到hdfs中
agent1.sinks.sink1.hdfs.path=hdfs://hadoop001:9000/flume_sink_data #数据在hdfs上的保存路径
agent1.sinks.sink1.hdfs.fileType=DataStream #sink的文件类型
agent1.sinks.sink1.hdfs.writeFormat=TEXT #输出格式
#配置channel1
agent1.channels.channel1.type=file #channel中的数据保存在文件中
agent1.channels.channel1.checkpointDir=/opt/apps/flume_data/flume_checkpoint_dir #channel数据检查点目录
agent1.channels.channel1.dataDirs=/opt/apps/flume_data/flume_channel_data #channel数据保存目录
#定义组件之间的连接
agent1.sources.source1.channels=channel1 #采集到的数据放到哪一个channel中去
agent1.sinks.sink1.channel=channel1 #sink的数据来源为channel1
启动flume命令:
flume-ng agent \
--name agent1 \ #agent名字
--conf-file /home/hadoop/app/flume/flume_conf/nc-m-l.conf \ #指定conf文件在哪
--conf $FLUME_HOME/conf \ #指定Flume配置文件
-Dflume.root.logger=INFO,console #指定的日志级别
需求:定义一个采集文件夹跟文件的数据并存放到HDFS上的Flume,要求数据准确性
分析:
Source taildir
Channel memory
Sink HDFS
#配置agent
taildir-hdfs-agent.sources = taildir-source
taildir-hdfs-agent.channels = taildir-memory-channel
taildir-hdfs-agent.sinks = hdfs-sink
#配置source
taildir-hdfs-agent.sources.taildir-source.type = TAILDIR
taildir-hdfs-agent.sources.taildir-source.filegroups = f1 f2
taildir-hdfs-agent.sources.taildir-source.filegroups.f1 = /home/hadoop/logs/access.log
taildir-hdfs-agent.sources.taildir-source.filegroups.f2 = /home/hadoop/data/test2/
#配置channel
taildir-hdfs-agent.channels.taildir-memory-channel.type = memory
#配置sink
taildir-hdfs-agent.sinks.hdfs-sink.type = hdfs
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.path = hdfs://hadoop001:9000/ruoze/flume/nginx/%Y%m%d
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.fileType = CompressedStream #定义输出文件为压缩
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.codeC = gzip #指定文件压缩类型
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.batchSize = 10 #一次处理event的数量
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.writeFormat = Text #写sequence 文件的格式
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.filePrefix = page-views #写入hdfs的文件名前缀
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.rollInterval = 30000 #hdfs sink间隔多长将临时文件滚动成最终目标文件
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.rollCount = 0 #当events数据达到该数量时候,将临时文件滚动成目标文件
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.rollSize = 100000000 # 当临时文件达到该大小(单位:bytes)时,滚动成目标文件
#用来设置HDFS文件夹滚动
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.useLocalTimeStamp = true #是否使用当地时间。
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.round=true #是否启用时间上的”舍弃”,这里的”舍弃”,类似于”四舍五入”
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.roundValue=1 #时间上进行“舍弃”的值
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.roundUnit=hour #时间上进行”舍弃”的单位,包含:second,minute,hour
#定义组件之间的连接
taildir-hdfs-agent.sources.taildir-source.channels = taildir-memory-channel
taildir-hdfs-agent.sinks.hdfs-sink.channel = taildir-memory-channel
启动flume命令:
flume-ng agent \
--name taildir-hdfs-agent \
--conf-file /home/hadoop/app/flume/flume_conf/tail-m-h.conf \
--conf $FLUME_HOME/conf \
-Dflume.root.logger=INFO,console