当前位置: 首页 > 知识库问答 >
问题:

向hdfs收集在线数据时的水槽损失数据

龙俊英
2023-03-14

我使用flume-ng 1.5版本来收集日志。

数据流中有两个代理,它们分别位于两个主机上。

数据从代理1发送到代理2。

代理的组件如下:

代理1:假脱机目录源-

代理2: avro源-

但是它似乎丢失了大约百万数据千分之一的数据。为了解决问题,我尝试了以下步骤:

  1. 查找代理日志:找不到任何错误或异常。
  2. 查找代理监视指标:从通道中放置和获取的事件数始终相等
  3. 按Hive查询和HDFS文件使用shell统计数据号,分别:两个数字相等且小于在线数据数

代理1的配置:

#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

代理 2 的配置

# 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

欢迎任何建议!

共有1个答案

艾鹭洋
2023-03-14

当遇到utf的某个特定字符时,文件行反序列器中存在一个错误,该字符指向U 10000和U 10FFFF之间,它们在utf16中由两个称为代理对的16位代码单元表示。

 类似资料:
  • 当hdfs不可用时,是否有方法确保数据安全?场景是:kafka源,flume内存通道,hdfs接收器。如果水槽服务关闭了,它是否可以存储主题分区的偏移量,并在恢复后从正确的位置消费?

  • 我试图将FLUME与HDFS集成,我的FLUME配置文件是 我的核心站点文件是 当我尝试运行flume代理时,它正在启动,并且能够从nc命令中读取,但是在写入hdfs时,我得到了下面的异常。我尝试使用< code > Hadoop DFS admin-safe mode leave 在安全模式下启动,但仍然出现以下异常。 如果在任何属性文件中配置了错误,请告诉我,以便它可以工作。 另外,如果我为此

  • 我想使用 flume 将数据从 hdfs 目录传输到 hdfs 中的目录,在此传输中,我想应用处理形态线。 例如:我的来源是 我的水槽是 有水槽可能吗? 如果是,源水槽的类型是什么?

  • 我们可以为HDFS Sink添加分隔符吗?写入文件时,我们如何添加记录分隔符? 以下是配置:-

  • 我正在尝试使用hdfs水槽运行水槽。hdfs在不同的机器上正常运行,我甚至可以与水槽机器上的hdfs交互,但是当我运行水槽并向其发送事件时,我收到以下错误: 同样,一致性不是问题,因为我可以使用hadoop命令行与hdfs交互(水槽机不是datanode)。最奇怪的是,在杀死水槽后,我可以看到tmp文件是在hdfs中创建的,但它是空的(扩展名仍然是. tmp)。 关于为什么会发生这种情况的任何想法

  • 我遇到了Flume的问题(Cloudera CDH 5.3上的1.5): 我想做的是:每5分钟,大约20个文件被推送到假脱机目录(从远程存储中抓取)。每个文件包含多行,每行是一个日志(在JSON中)。文件大小在10KB到1MB之间。 当我启动代理时,所有文件都被成功推送到HDFS。1分钟后(这是我在flume.conf中设置的),文件被滚动(删除. tmp后缀并关闭)。 但是,当在假脱机目录中找到