Your SlideShare is downloading. ×
0
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Flume 훑어보기
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Flume 훑어보기

4,456

Published on

Flume ng 에 대한 훑어보기 자료입니다.

Flume ng 에 대한 훑어보기 자료입니다.

Published in: Technology
1 Comment
23 Likes
Statistics
Notes
No Downloads
Views
Total Views
4,456
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
87
Comments
1
Likes
23
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Flume NG 훑어보기 최범균 (2013-12-13)
  • 2. Flume ● 데이터 수집 목적 ○ 다양한 소스로부터 ○ 다양한 보관소로의 ○ 데이터 흐름을 처리 ● Flume 이벤트 ○ 헤더와 데이터(payload)로 구성 ○ 에이전트를 통해 이동하는 단위 ● Flume 에이전트 ○ 이벤트(데이터) 흐름 제어 ○ 에이전트 간 데이터 이동 가능 ■ 1개 에이전트가 다수의 에이전트와 연결 가능
  • 3. 에이전트의 기본 구성 에이전트 소스가 읽어오는 대 상 (예, TCP 데이터, Avro 클라이언트 등) 소스 Source 채널 Channel 싱크 Sink 싱크가 출력하는 대 상 (예, HDFS, HBASE, 파일, 다른 에이전트 등) ● 소스: 지정한 소스를 통해서 이벤트를 받아 채널로 전달 ● 채널: 이벤트를 임시로 보관 ● ○ 메모리 채널, 파일 채널, DB 채널 싱크: 채널에서 이벤트를 읽어와 출력 대상에 씀 ○ 싱크가 출력 대상에 이벤트(데이터)를 전달을 완료하 면, 채널에서 해당 이벤트를 삭제
  • 4. 에이전트 간 연결 에이전트 소스 Source 채널 Channel Avro Sink Avro/Thrift 를 이용해서 에이전트 간 이벤트 전 달 에이전트 Avro Source 채널 Channel 싱크 Sink
  • 5. Fan-in 구성 에이전트 소스 채 널 Avro Sink 에이전트 Avro 채 널 Sink 에이전트 소스 채 널 Avro Sink 다수의 노드에서 발생하는 이벤트를 한 곳으로 모을 때
  • 6. Fan-out 구성 에이전트 에이전트 Avro 채 널 Avro Sink 채 널 HDFS Sink 채 널 소스 채 널 Solr Sink HDFS SOLR 한 이벤트를 다양한 방식으로 처리할 때 사용 Sink
  • 7. 주요 Source와 Sink 소스의 종류: ● Spooling Directory Source: 디렉토리에 새롭게 추가되는 파일을 데이터로 사용 ● Exec Source: 명령행을 실행하고 콘솔 출력 내용을 데이터 입력으로 사용 ● Avro Source: 외부 Avro 클라이언트에서 전송하는 데이터 수신해서 입력으로 사용 ● Thrift Source: 외부 Thrift 클라이언트에서 전송하는 데이터 수신해서 입력으로 사용 ● JMS Source: JMS 메시지를 입력으로 사용 ● Syslog Source: 시스템 로그를 입력으로 사용 ● NetCat source: TCP로 라인 단위 입력 받음 싱크의 종류: ● HDFS Sink: HDFS에 데이터를 파일로 씀 ● HBase Sink: HBase에 데이터를 씀 ● Avro Sink: 다른 Avro 서버(Avro Source)에 이벤트를 전달함 ● Thrift Sink: 다른 Thrift 서버(Thrift Source)에 이벤트를 전달함 ● File Roll Sink: 로컬 파일에 데이터를 씀 ● MorphlineSolrSink: 데이터를 변환해서 Solr 서버에 씀 ● ElasticSearchSink: 데이터를 변환해서 ElasticSearch 클러스터에 씀 ● Null Sink: 이벤트를 버림
  • 8. 에이전트 설정: 파일 이용 # a1 에이전트의 소스, 채널, 싱크 목록 a1.sources = avrsrc a1.channels = memch a1.sinks = avrsink # a1 에이전트의 소스 설정 a1.sources.avrsrc.type = avro a1.sources.avrsrc.bind = 0.0.0.0 a1.sources.avrsrc.port = 44444 a1.sources.avrsrc.channels = memch ... # a1 에이전트의 채널 설정 a1.channels.memch.type = memory ... # a1 에이전트의 싱크 설정 a1.sinks.avrsink.type = avro a1.sinks.avrsink.hostname = otherhost a1.sinks.avrsink.port = 55555 a1.sinks.avrsink.channel = memch ... 에이전트 avrsrc memch avrsink -- 에이전트 실행 시, 에이전트 이름 지정 $ flume-ng agent -n a1 -c conf -f confg.properties
  • 9. Interceptor ● Source로 들어온 이벤트 수정 또는 버릴 때 사용 ○ Source로 들어온 이벤트는 interceptor를 거친 뒤에 채널에 전달 ● Interceptor의 종류 ○ Timestamp : 이벤트 헤더에 현재 시간 값 추가 ○ Static Interceptor : 이벤트 헤더에 지정한 값 추가 ○ Regex filtering interceptor : 정규 표현식에 일치하는 지 여부에 따라 이벤트를 버릴지 여부 결정 ● 한 개 이상 interceptor 적용 가능
  • 10. Channel Selector ● Source가 받은 이벤트를 전달할 채널을 선택 ○ replicating, multiplexing(헤더 값을 기준 선택) replicating 채널 선택 소스 모두 전달 채 널 multiplexing 채널 선택 state헤더값 이 “2”인 것 Avro Sink 채 널 Avro Sink 채 널 HDFS Sink 소스 채 널 HDFS Sink a1.sources.s1.channels = c1 c2 # replicating이 default a1.sources.s1.selector.type = replicating state헤더값 이 “1”인 것 a1.sources.s1.channels = c1 c2 a1.sources.s1.selector.type = multiplexing a1.sources.s1.selector.header = state a1.sources.s1.selector.mapping.1 = c1 a1.sources.s1.selector.mapping.2 = c2 a1.sources.s1.selector.default = c1
  • 11. Sink Processor ● 한 채널에 여러 Sink를 그룹으로 묶을 때 사용 종류 설명 설정 예 Default 한 채널에 한 개 Sink Failover 우선 순위 높은 Sink에 이벤트를 쓰고, 문제 발생시 우선순위 낮은 Sink에 씀 문제 해결시, 다시 우선 순위 높 은 Sink에 쓰기 시작 a1.sinks.main.channel = c1 a2.sinks.backup.channel = c1 a1.sinkgroups.g1.sinks = main backup a2.sinkgroups.g1.processor.type = failover a2.sinkgroups.g1.processor.priority.main = 10 a2.sinkgroups.g1.processor.priority.backup = 5 Load Balance Sink를 알맞게 배분 (round_robin, random) a1.sinkgroups.g1.sinks = s1 s2 a1.sinkgroups.g1.processor.type = load_balance a1.sinkgroups.g1.processor.selector = random
  • 12. 어플리케이션이 생성한 데이터를 Source에 이벤트로 전송하려면? ● Avro/Thrift 클라이언트 이용해서 직접 데이터 를 Source에 추가 ○ 예, flume을 위한 Log4jAppender 사용해서 Log4j 로 그를 특정 에이전트의 Avro Source로 전송 ● 파일을 읽어오는 Source 사용 ○ 예, Spooling Directory Source 사용 ● Flume이 제공하는 클라이언트로 파일 데이터 를 Avro Source로 전송 ○ $ flume-ng avro-client -H host -p 44444 -F someFile
  • 13. 관련된 또는 비슷한 다른 기술 ● ● ● ● ● Logstash (로그 수집) Fluentd (로그 수집) Kafka (메시징) Storm (스트림 변환) …. 너무 많음

×