2014-10-02 2 views
1

flume을 사용하여 hdfs에 log4j 메시지를 보내는 장난감 설정이 있습니다. 많은 작은 파일을 피하기 위해 hdfs 싱크를 구성 할 수 없습니다. 나는 파일 크기가 10MB에 도달 할 때마다 새로운 파일을 생성하기 위해 hdfs 싱크를 구성 할 수 있다고 생각했지만 여전히 1.5KB 정도의 파일을 생성하고 있습니다.Flume HDFS 싱크는 HDFS에서 많은 작은 파일을 생성합니다.

a1.sources=o1 
a1.sinks=i1 
a1.channels=c1 

#source configuration 
a1.sources.o1.type=avro 
a1.sources.o1.bind=0.0.0.0 
a1.sources.o1.port=41414 

#sink config 
a1.sinks.i1.type=hdfs 
a1.sinks.i1.hdfs.path=hdfs://localhost:8020/user/myName/flume/events 
#never roll-based on time 
a1.sinks.i1.hdfs.rollInterval=0 
#10MB=10485760 
a1.sinks.il.hdfs.rollSize=10485760 
#never roll base on number of events 
a1.sinks.il.hdfs.rollCount=0 

#channle config 
a1.channels.c1.type=memory 
a1.channels.c1.capacity=1000 
a1.channels.c1.transactionCapacity=100 

a1.sources.o1.channels=c1 
a1.sinks.i1.channel=c1 

답변

4

conf의 오타입니다.

#sink config 
a1.sinks.i1.type=hdfs 
a1.sinks.i1.hdfs.path=hdfs://localhost:8020/user/myName/flume/events 
#never roll-based on time 
a1.sinks.i1.hdfs.rollInterval=0 
#10MB=10485760 
a1.sinks.il.hdfs.rollSize=10485760 
#never roll base on number of events 
a1.sinks.il.hdfs.rollCount=0 

어디 라인 'rollSize'와 'rollCount', 당신은 I1위원장을 넣어. DEBUG를 사용하여보십시오, 다음과 같이 찾을 수 있습니다 :

[SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.sink.hdfs.BucketWriter.shouldRotate:465) - rolling: rollSize: 1024, bytes: 1024 

인해 위원장에, rollSize 1024의 기본값이 사용 중입니다.

+0

예제에 따르면, 이해할 수있는대로 10MB마다 쓰기가 발생합니다. 그러나 15Mb 파일의 경우 마지막 5MB의 쓰기를 트리거합니다. – Viktor

0

HDFS 싱크 속성 hdfs.batchSize (기본 100)가 "은 HDFS에 플러시되기 전에 파일에 기록 된 사건의 수를"설명 :

여기에 내 현재 수로의 설정입니다. 그게 네 문제 야.

다른 모든 속성도 확인하십시오 (HDFS Sink).

+0

그 중 하나도 작동하지 않았습니다. 채널 때문일 수 있습니까? – hba

+0

싱크대의 배치 작업은 크기 기반 일뿐만 아니라 시간 기반 작업입니다. Edward Capriolo의 File Crusher와 같은 것을 고려해 볼 수 있습니다. https://github.com/edwardcapriolo/filecrush – Sarge

+0

@Sarge -하지만 시간 기반 버전 인 a1.sinks.i1.hdfs.rollInterval = 0은 사용하지 않았습니다. 분명히, 이것은 hdfs에서 많은 작은 파일을 생성하는 것이 node-name에 좋지 않다는 것을 해결해야만합니다. – hba

0

이것은 메모리 채널과 메모리 용량으로 인해 발생할 수 있습니다. 용량이 가득 차게되면 HDFS로 덤핑 데이터를 추측합니다. 메모리 대신 파일 채널을 사용해 보셨습니까?

+0

예 파일 채널을 똑같이 사용했습니다 ... 근본적인 뭔가를 놓치고있는 것처럼 느껴집니다 ... – hba

관련 문제