[HADOOP] Flume HDFS 싱크는 작은 파일을 계속 롤링합니다.
HADOOPFlume HDFS 싱크는 작은 파일을 계속 롤링합니다.
flume을 사용하여 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
편집 : 나는 로그 파일을 조사하고 이런 일이 항상 발견 :
해결법
-
==============================
1.HDFS 복제 요소에 문제가있는 것처럼 보였습니다. 1 가상 데이터 노드가있는 가상 컴퓨터에서 작업 할 때 복제 요소를 1로 설정해야 예상대로 작동 할 수 있습니다.
HDFS 복제 요소에 문제가있는 것처럼 보였습니다. 1 가상 데이터 노드가있는 가상 컴퓨터에서 작업 할 때 복제 요소를 1로 설정해야 예상대로 작동 할 수 있습니다.
-
==============================
2.클러스터의 dfs.replication을 적절한 값으로 설정하십시오. 이 작업은 hdfs-site.xml 파일을 편집하여 수행 할 수 있습니다 (모든 클러스터 시스템에서). 그러나 이것은 충분하지 않습니다.
클러스터의 dfs.replication을 적절한 값으로 설정하십시오. 이 작업은 hdfs-site.xml 파일을 편집하여 수행 할 수 있습니다 (모든 클러스터 시스템에서). 그러나 이것은 충분하지 않습니다.
또한 flume 클래스 경로에 hdfs-site.xml 파일을 만들고 클러스터의 동일한 dfs.replication 값을 클러스터의 classpath에 넣어야합니다. Hadoop 라이브러리는 클러스터에서 작업을 수행하는 동안이 파일을보고 그렇지 않으면 기본값을 사용합니다.
<?xml version="1.0" encoding="UTF-8"?> <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
from https://stackoverflow.com/questions/22145899/flume-hdfs-sink-keeps-rolling-small-files by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] STRUCT를 사용한 간단한 Hive 쿼리의 구문 오류는 어디에 있습니까? (0) | 2019.06.12 |
---|---|
[HADOOP] mapreduce를 사용하여 HDFS에서 이미지 읽기 (0) | 2019.06.12 |
[HADOOP] Hive - Thrift - 이전 클라이언트의 readMessageBegin에 누락 된 버전이 있습니까? (0) | 2019.06.12 |
[HADOOP] Java에서 작동하지 않는 Kerberos 티켓 자동 갱신 (0) | 2019.06.12 |
[HADOOP] 돼지에 유출 된 기억을 다루는 법 (0) | 2019.06.12 |