2014-03-03 31 views
1

我試圖用水槽到Twitter數據流進入HDFS和這樣的:https://github.com/cloudera/cdh-twitter-example/水槽HDFS片保持滾動的小文件

無論我嘗試在這裏,它不斷創造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);將不會 繼續在此路徑下滾動文件由於under-replication

回答

3

這似乎是HDFS複製因素的問題。由於我在使用1個虛擬datanode的虛擬機上工作,我必須將複製因子設置爲1才能按預期工作。

+0

我收到了同樣的錯誤,您是如何解決的?你是如何將複製因子設置爲1的? – Burhan

+0

您可以在Cloudera Manager中進行設置。我不記得在哪裏.. – JochenDB

+0

我發現它,它在路徑/etc/hadoop/conf/hdfs-site.xml和屬性名稱是dfs.replication,我已將它設置爲1.它爲我工作! – Burhan

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>