Hadoop 向hdfs收集在线数据时水槽损失数据
我使用flume ng 1.5版本收集日志 数据流中有两个代理,它们分别位于两台主机上 数据从agent1发送到agent2。 代理的组成部分如下: agent1:假脱机目录源-->文件通道-->avro接收器 agent2:avro源-->文件通道-->hdfs接收器 但它似乎丢失了约1/1000%的数据。 为了解决这个问题,我尝试了以下步骤:Hadoop 向hdfs收集在线数据时水槽损失数据,hadoop,flume-ng,Hadoop,Flume Ng,我使用flume ng 1.5版本收集日志 数据流中有两个代理,它们分别位于两台主机上 数据从agent1发送到agent2。 代理的组成部分如下: agent1:假脱机目录源-->文件通道-->avro接收器 agent2:avro源-->文件通道-->hdfs接收器 但它似乎丢失了约1/1000%的数据。 为了解决这个问题,我尝试了以下步骤: 查找代理日志:找不到任何错误或异常 查找代理监控指标:从通道放置和获取的事件数始终等于 通过配置单元查询和hdfs文件使用shell分别统计数据编号:
#agent
agent1.sources = src_spooldir
agent1.channels = chan_file
agent1.sinks = sink_avro
#source
agent1.sources.src_spooldir.type = spooldir
agent1.sources.src_spooldir.spoolDir = /data/logs/flume-spooldir
agent1.sources.src_spooldir.interceptors=i1
#interceptors
agent1.sources.src_spooldir.interceptors.i1.type=regex_extractor
agent1.sources.src_spooldir.interceptors.i1.regex=(\\d{4}-\\d{2}-\\d{2}).*
agent1.sources.src_spooldir.interceptors.i1.serializers=s1
agent1.sources.src_spooldir.interceptors.i1.serializers.s1.name=dt
#sink
agent1.sinks.sink_avro.type = avro
agent1.sinks.sink_avro.hostname = 10.235.2.212
agent1.sinks.sink_avro.port = 9910
#channel
agent1.channels.chan_file.type = file
agent1.channels.chan_file.checkpointDir = /data/flume/agent1/checkpoint
agent1.channels.chan_file.dataDirs = /data/flume/agent1/data
agent1.sources.src_spooldir.channels = chan_file
agent1.sinks.sink_avro.channel = chan_file
agent2的配置
# agent
agent2.sources = source1
agent2.channels = channel1
agent2.sinks = sink1
# source
agent2.sources.source1.type = avro
agent2.sources.source1.bind = 10.235.2.212
agent2.sources.source1.port = 9910
# sink
agent2.sinks.sink1.type= hdfs
agent2.sinks.sink1.hdfs.fileType = DataStream
agent2.sinks.sink1.hdfs.filePrefix = log
agent2.sinks.sink1.hdfs.path = hdfs://hnd.hadoop.jsh:8020/data/%{dt}
agent2.sinks.sink1.hdfs.rollInterval = 600
agent2.sinks.sink1.hdfs.rollSize = 0
agent2.sinks.sink1.hdfs.rollCount = 0
agent2.sinks.sink1.hdfs.idleTimeout = 300
agent2.sinks.sink1.hdfs.round = true
agent2.sinks.sink1.hdfs.roundValue = 10
agent2.sinks.sink1.hdfs.roundUnit = minute
# channel
agent2.channels.channel1.type = file
agent2.channels.channel1.checkpointDir = /data/flume/agent2/checkpoint
agent2.channels.channel1.dataDirs = /data/flume/agent2/data
agent2.sinks.sink1.channel = channel1
agent2.sources.source1.channels = channel1
欢迎提出任何建议 文件行反序列化程序中有一个错误,当遇到utf的某个特定字符(点在U+10000和U+10FFFF之间)时,它们在utf16中由两个称为代理项对的16位代码单元表示