分享

请教flume处理文件的性能能达到多少?

w9527 发表于 2015-3-15 18:54:17 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 17 167507
我的文件来源是每1-2分钟产生一个800M左右的文件,需要放到hdfs中,
我试下来flume最多每分钟处理400M左右,效率太低,
Spooling Directory Source
Channels.type=memory
HDFS
请问专家如何提高处理文件的能力?谢谢!

已有(17)人评论

跳转到指定楼层
jixianqiuxue 发表于 2015-3-15 19:00:36
变快可以增加内存,这是直接加快的方法,当然对于变慢,也是有处理方法的。引用基于Flume的美团日志收集系统(一)架构和设计中的一段话,或则对楼主有所帮助

当Hadoop上的任务较多且有大量的读写操作时,Hdfs的读写数据往往变的很慢。由于每天,每周都有高峰使用期,所以这种情况非常普遍。
对于Hdfs变慢的问题,我们同样使用DualChannel来解决。当Hdfs写入较快时,所有的events只经过MemChannel传递数据,减少磁盘IO,获得较高性能。当Hdfs写入较慢时,所有的events只经过FileChannel传递数据,有一个较大的数据缓存空间


回复

使用道具 举报

zzuyao 发表于 2015-3-16 09:53:59
直接写shell 脚本 调用hadoop fs -put 比较快
回复

使用道具 举报

w9527 发表于 2015-3-16 10:40:10
jixianqiuxue 发表于 2015-3-15 19:00
变快可以增加内存,这是直接加快的方法,当然对于变慢,也是有处理方法的。引用基于Flume的美团日志收集系 ...

我尝试改了这些配置,都没有什么效果,下面是我的配置,请专家帮忙分析一下,谢谢!
#defin source
a1.sources=sr1
a1.sinks=sk1
a1.channels=ch1
#configure channel
a1.channels.ch1.type=memory
a1.channels.ch1.capacity =1000000000
a1.channels.ch1.transactionCapacity =500000000
a1.channels.ch1.keep-alive=30
#a1.channels.ch1.byteCapacityBufferPercentage=40
#a1.channels.ch1.byteCapacity=536870912
# Describe/configure the source
a1.sources.sr1.channels=ch1
a1.sources.sr1.type=spooldir
a1.sources.sr1.spoolDir=/home/hadoop/9900/data
a1.sources.sr1.batchSize=100
a1.sources.sr1.consumeOrder=youngest
#a1.sources.sr1.inputCharset=UTF-8
# Describe the sink
a1.sinks.sk1.channel=ch1
a1.sinks.sk1.type=hdfs
a1.sinks.sk1.hdfs.path=hdfs://c7000-master:8020/wjl/%y-%m-%d/%H%M
#%y-%m-%d/%H%M
a1.sinks.sk1.hdfs.filePrefix=events-
a1.sinks.sk1.hdfs.rollSize=0
a1.sinks.sk1.hdfs.rollInterval=60
a1.sinks.sk1.hdfs.threadsPoolSize=10
a1.sinks.sk1.hdfs.rollCount=0
a1.sinks.sk1.hdfs.batchSize=100000
a1.sinks.sk1.hdfs.fileType=DataStream
a1.sinks.sk1.hdfs.writeFormat=TEXT
a1.sinks.sk1.hdfs.round=true
a1.sinks.sk1.hdfs.roundUnit=minute
a1.sinks.sk1.hdfs.idleTimeout=0
a1.sinks.sk1.hdfs.retryInterval=180
a1.sinks.sk1.hdfs.rollTimerPoolSize=1
a1.sinks.sk1.hdfs.minBlockReplicas=1
a1.sinks.sk1.hdfs.useLocalTimeStamp=true
a1.sinks.sk1.hdfs.callTimeout=30000

我机器内存有100多G,我给flume-ng里JAVA_OPTS="-Xmx10000m",我处理了4个700兆的文件,处理完成后每分钟也就400兆,感觉怎么改参数都提高不了,很是郁闷啊。
回复

使用道具 举报

w9527 发表于 2015-3-16 10:43:52
zzuyao 发表于 2015-3-16 09:53
直接写shell 脚本 调用hadoop fs -put 比较快

脚本是很快,这个flume如果解决不了我的问题,我就只能自己写shell了。呵呵
回复

使用道具 举报

zzuyao 发表于 2015-3-16 10:59:30
a1.sources.sr1.batchSize=100
这个值设大一点试试
回复

使用道具 举报

w9527 发表于 2015-3-16 11:01:05
zzuyao 发表于 2015-3-16 10:59
a1.sources.sr1.batchSize=100
这个值设大一点试试

这个从100到1000000都试过了,没啥用啊
回复

使用道具 举报

arsenduan 发表于 2015-3-16 11:22:11
w9527 发表于 2015-3-16 11:01
这个从100到1000000都试过了,没啥用啊



你这是按照时间滚动的吧,把这个参数设置的小一点
a1.sinks.sk1.hdfs.rollInterval=60
参考:
Flume按文件的方式导入hdfs的问题

回复

使用道具 举报

w9527 发表于 2015-3-16 12:33:04
回复

使用道具 举报

arsenduan 发表于 2015-3-16 12:37:25
w9527 发表于 2015-3-16 12:33
改成20或60都没啥区别,看来这个flume真不靠谱啊。

这个应该有所改变。可以在设置小点。
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条