2014-03-03 2 views
1

나는 수로를 사용하여 HDFS에 트위터 데이터를 스트리밍하기 위해 노력하고있어이 롤링 유지 여기서 나는 큰 파일 (64Mb)을보고 싶다.수로 HDFS 싱크는 작은 파일

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 오전 WARN을 org.apache.flume.sink .hdfs.BucketWriter Block 과소 복제가 감지되었습니다. 파일 회전. 9 : 11 : 37.036 AM ERROR org.apache.flume.sink.hdfs.BucketWriter

최대 연속 복제 불량 회전 수 (30); will not under-replication 때문에이 경로에서 파일 롤링 계속하기

답변

3

HDFS 복제 요소에 문제가있는 것 같습니다. 가상 데이터 노드가 1 개인 가상 시스템에서 작업 할 때 예상대로 작동하려면 복제 요소를 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>