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