我正在尝试使用flume将twitter数据流到hdfs中:https://github.com/cloudera/cdh-twitter-example/
无论我在这里尝试什么,它都会在hdfs中不断创建大小从1.5kb到15kb的文件,在这里我希望看到大文件(64mb)。以下是代理配置:
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 = xxxxxx
TwitterAgent.sources.Twitter.consumerSecret = xxxxxx
TwitterAgent.sources.Twitter.accessToken = xxxxx
TwitterAgent.sources.Twitter.accessTokenSecret = xxxxxxxx
TwitterAgent.sources.Twitter.keywords = test
TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost.localdomain:8020/user/flume/tweets/%Y/%m/%d/%H/
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 10000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 67108864
TwitterAgent.sinks.HDFS.hdfs.rollCount = 0
TwitterAgent.sinks.HDFS.hdfs.rollInterval = 0
TwitterAgent.sinks.HDFS.hdfs.idleTimeout = 0
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 1000
编辑:我查看了日志文件,发现这种情况时有发生:
上午9:11:27.526检测到org.apache.flume.sink.hdfs.bucketwriter块处于复制状态。旋转文件。上午9:11:37.036错误org.apache.flume.sink.hdfs.bucketwriter
在复制循环下达到最大连续(30);由于复制不足,将无法继续滚动此路径下的文件
2条答案
按热度按时间sgtfey8w1#
这似乎是hdfs复制因子的问题。当我在一个有1个虚拟数据节点的虚拟机上工作时,我必须将复制因子设置为1,才能使它按预期工作。
ssgvzors2#
套
dfs.replication
在集群上设置一个适当的值。这可以通过编辑完成hdfs-site.xml
文件(在群集的所有计算机上)。然而,这还不够。你还需要创造
hdfs-site.xml
在flume类路径上归档并将相同的dfs.replication
从集群中获取价值。hadoop库在集群上执行操作时会查看这个文件,否则它们会使用默认值。