我正在尝试使用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 AM WARN org.apache.flume.sink.hdfs.BucketWriter Block 检测到复制不足。旋转文件。上午9:11:37.036错误 org.apache.flume.sink.hdfs.BucketWriter
命中最大连续复制下旋转(30);将不会 由于复制不足,继续在此路径下滚动文件
答案 0 :(得分:3)
这似乎是HDFS复制因素的问题。当我在使用1个虚拟数据节点的虚拟机上工作时,我必须将复制因子设置为1,以使其按预期工作。
答案 1 :(得分:2)
将群集上的dfs.replication
设置为适当的值。这可以通过编辑hdfs-site.xml
文件(在群集的所有计算机上)来完成。但是,这还不够。
您还需要在flume类路径上创建hdfs-site.xml
文件,并在群集中添加相同的dfs.replication
值。 Hadoop库在对集群执行操作时查看此文件,否则它们使用默认值。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>