我想我已经尝试过改变配置文件的每一个组合。我也看到某处可能是因为我的复制因子为3所以我把它改为1.我在AWS上使用cloudera manager。以下是我的配置文件,任何想法?
在HDFS中,文件大小都在20kb以下,试图获得至少40-50mb。有趣的是,相同的配置文件正在我练习的虚拟机上编写~60mb文件(预安装的hadoop +工具)。请参阅下面的配置文件,任何想法?
# The configuration file needs to define the sources,
# the channels and the sinks.
# Sources, channels and sinks are defined per agent,
# in this case called 'TwitterAgent'
TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS
TwitterAgent.sources.Twitter.type = com.cloudera.flume.source.TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sources.Twitter.consumerKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TwitterAgent.sources.Twitter.consumerSecret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TwitterAgent.sources.Twitter.accessToken = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TwitterAgent.sources.Twitter.accessTokenSecret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TwitterAgent.sources.Twitter.keywords = apple, grapes, fruits, strawberry, mango, pear
TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://123.456.789.us-west-2.compute.amazonaws.com:8020/user/flume/tweets
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.rollInterval = 0
TwitterAgent.sinks.HDFS.hdfs.batchSize = 100000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 0
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 1000
答案 0 :(得分:0)
如果rollInterval
,batchSize
,rollSize
& rollCount
不起作用,看起来仍然是hdfs.callTimeout
。
因为有人说减少复制因素可能是解决方案。
减少复制因子意味着减少hdfs
操作时间,根据用户guideline,默认值callTimeout
为10000毫秒。
其他线索
答案 1 :(得分:0)
所以我终于弄明白了这个问题。 (注意我正在运行单节点测试集群)。 stackoverflow中的一个解决方案是将dfs.replication因子设置为1,但我没有解决问题。
由于某些原因,发生的事情是我的水槽剂,配置不匹配。 HDFS接收器有一个名为minBlockReplicas
的参数,它通知它需要多少块副本,如果没有指定,它会从默认的HDFS配置文件(我认为我设置为1)中提取该paramaneter )。它似乎为dfs.replication
或dfs.namennode.replication.min
获得了不同的值。
我通过使用
直接修改了我的水槽文件TwitterAgent.sinks.HDFS.hdfs.minBlockReplicas = 1
希望这会有所帮助。
答案 2 :(得分:-1)
是的,通过添加此行,它解决了我在使用flume时在HDFS上创建的小型多个文件
a1.sinks.HDFS.hdfs.minBlockReplicas = 1