代码之家  ›  专栏  ›  技术社区  ›  JochenDB

水槽HDFS水槽不断滚动小文件

  •  2
  • JochenDB  · 技术社区  · 10 年前

    我正在尝试使用水槽将推特数据流到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块 检测到复制不足。旋转文件。9:11:37.036 AM错误 org.apache.flume.sink.hdfs.BucketWriter

    在复制循环下连续命中最大值(30);不会的 由于复制不足,继续在此路径下滚动文件

    2 回复  |  直到 7 年前
        1
  •  4
  •   JochenDB    10 年前

    这似乎是HDFS复制因子的问题。当我在一个具有1个虚拟数据节点的虚拟机上工作时,我必须将复制因子设置为1,以使其按预期工作。

        2
  •  3
  •   bekce    9 年前

    设置 dfs.replication 在您的集群上设置一个适当的值。这可以通过编辑完成 hdfs-site.xml 文件(在集群的所有计算机上)。然而,这还不够。

    您还需要创建 hdfs-site.xml文件 将文件放在水槽类路径中 dfs.复制 Hadoop库在对集群进行操作时查看该文件,否则使用默认值。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>2</value>
        </property>
    </configuration>