分享

flume采集数据到HDFS报错,采集进去一部分,文件比较大300多MB

yunge2016 发表于 2017-8-24 13:05:59 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 9411
问题描述: 做项目需要采集数据到hdfs里,用flume采集的数据,文件比较大300多MB,采集到一半,突然报错了。
错误:
2017-08-23 23:39:51,993 (pool-3-thread-1) [ERROR - org.apache.flume.source.SpoolDirectorySource$SpoolDirectoryRunnable.run(SpoolDirectorySource.java:280)] FATAL: Spool Directory source r1: { spoolDir: /home/hadoop/data/flumeData }: Uncaught exception in SpoolDirectorySource thread. Restart or reconfigure Flume to continue processing.
java.lang.IllegalStateException: File has been modified since being read: /home/hadoop/data/flumeData/02-0302.txt


另外一个错误:
Closing /hadoopProject01/17-08-23//beicai.1503545869159.tmp
2017-08-23 23:37:54,364 (DataStreamer for file /hadoopProject01/17-08-23/beicai.1503545869159.tmp) [WARN - org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.closeResponder(DFSOutputStream.java:611)] Caught exception
java.lang.InterruptedException

希望能得到解答,谢谢

已有(4)人评论

跳转到指定楼层
qcbb001 发表于 2017-8-24 15:43:10
要看的flume的type设置,还有文件是否是一直被追加的。或则是从别的目录中复制过来。还没复制完就被传递了等情况
回复

使用道具 举报

yunge2016 发表于 2017-8-24 16:03:14
配置文件主要内容如下:
## describe sources
a1.sources.r1.type=spooldir
a1.sources.r1.spoolDir=/home/hadoop/data/flumeData
a1.sources.r1.fileHeader = false
a1.sources.r1.deserializer.maxLineLength=10240

## describe channel
a1.channels.c1.type=memory

##describe sinks
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=/hadoopProject01/%y-%m-%d/
a1.sinks.k1.hdfs.filePrefix = beicai
a1.sinks.k1.hdfs.fileType=DataStream
#每个批次刷新到hdfs的events的数据
a1.sinks.k1.hdfs.batchSize =10
#如果设置为0,则表示不根据events数据来滚动文件
a1.sinks.k1.hdfs.rollCount= 0
#当临时文件达到该大小的时候(单位为bytes)时,滚动成目标文件
a1.sinks.k1.hdfs.rollSize=52428800
#如果设置为0,则表示不根据时间来滚动文件
a1.sinks.k1.hdfs.rollInterval=0
#是否启用时间上的"舍弃"
a1.sinks.k1.hdfs.round = false
#5分钟后滚动为一个文件
a1.sinks.k1.hdfs.roundValue = 5
a1.sinks.k1.hdfs.roundUnit = minute
a1.sinks.k1.hdfs.useLocalTimeStamp=true
  
帮忙看看有没有问题
回复

使用道具 举报

qcbb001 发表于 2017-8-24 16:29:31
yunge2016 发表于 2017-8-24 16:03
配置文件主要内容如下:
## describe sources
a1.sources.r1.type=spooldir

既然用内存作为channel,要保证内存足够,否则到一半产生问题,是正常的。a1.sinks.k1.hdfs.rollSize=52428800
rollSize可以调小一些。


回复

使用道具 举报

yunge2016 发表于 2017-8-25 10:24:04
好的 我试试  感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条