티스토리 뷰
Flume
<< flume >>
-
Apach의 오픈소스 프로젝트로 대용량의 로그를 수집할 수 있도록 여러가지 기능을 제공하는 프로그램
-
개요
-
로그 수집을 위한 프로그램
-
flume, chukwa, scribe, fluentd, splunk 등이 같은 종류의 프로그램
-
여러 곳에 위치하는 로그를 하나로 모을 수 있다.
-
로그를 배치로 한꺼번에 보내는 것이 아니라 스트리밍하게 지속적으로 보낸다.
-
메모리가 확보
-
비동기 방식
-
로그수집 Thread와 로그를 전송하는 Thread가 별도로 실행한다.
-
-
flume의 구성요소
-
Agent가 관리
-
flume은 여러가지 유형으로 Agent를 구성할 수 있다.
-
source와 sink, channel등의 구성요소는 반드시 설정 작업을 해야 한다.
-
source : 데이터가 유입되는 지점, 다양한 시스템의 데이터를 수집
-
avro : 네트워크 통신(노드에서 노드로 전송) was에서 로그를 avro통신을 통해서 hdfs서버로 전송
-
netcat : tcp통신으로 텍스트 전송
-
exec : command명령어(shell명령어)를 실행해서 내용을 수집
-
spooldir : 디렉토리에 저장된 파일
-
jms : 메시지
-
-
channel : 데이터가 이동하는 곳(source와 sink사이의 queue), source와 sink를 연결해서 데이터를 버퍼링
-
memory : source로 부터 받은 데이터를 메모리에 가지고 있다가 sink로 전달(유실 가능성은 있으나 빠르다)
-
jdbc : jdbc로 저장 - 유실은 없지만 느리다.
-
file : file로 저장 - 유실은 없지만 느리다.
-
-
sink : 유입된 데이터의 목적지, 수집한 정보를 채널로 부터 전달받아서 목적지에 저장하기
-
avro : 다른노드(머신, 서버, ...)로 전달(네트워크)
-
logger : tcp로 전송되는 텍스트 데이터를 로깅
-
file_roll : 로컬에 파일로 저장
-
hbase : hbase라는 nosql에 저장
-
hdfs : 하둡의 hdfs에 적재
-
elasticsearch : 엘라스틱서치에 적재
-
-
-
-
flume 실행 명령어
-
flume-ng agent명령어를 이용해서 실행
-
flume을 동작하도록 하기 위한 agent를 실행
-
flume_ng agent 옵션
[옵션]
--conf(-c) : flume의 conf 디렉토리를 정의(현재 위치를 기준으로)
--conf-file(-f) : flume이 인식해야하는 설정파일(ex. console.properties..)
--name(-n) : agent의 이름
-
-
telnet으로 입력받은 데이터를 flume로그 창에 출력하기
-
폴더에 저장된 파일을 다른 폴더로 이동하는 작업
-
설정파일 작성
-
input파일이 저장될 폴더 생성
-
output파일이 저장될 폴더 생성
-
source
-
폴더에 저장될 파일을 이동
-
type : spoolDir
-
[속성]
-
spoolDir : flume source가 읽어올 파일이 저장된 디렉토리
-
-
sink
-
다른 폴더에 저장하기
-
type : file_roll
-
[속성]
-
sink.directory - flume sink가 파일을 저장할 디렉토리
-
sink.rollInterval
-
기본값 30
-
30초마다 파일이 rolling된다.
-
0으로 지정하면 파일 rolling이 일어나지 않아서
파일을 읽어서 저장하는 이벤트가 발생하는 경우
하나의 파일에 저장된다.
-
-
-
-
폴더에서 hdfs로 이동
-
source
-
spoolDir
-
-
sink
-
type : hdfs
-
[속성]
-
hdfs.path=저장할 hdfs의 경로
-
hdfs://namenode정보/flume/output
-
namenode의 호스트 명이나 주소
-
hdfs상의 path
-
-
-
hdfs.fileType=DataStream
-
문자열 그대로 저장하기 위해서
-
-
callTimeout=XXX
-
숫자값으로 대기시간
-
-
hdfs.batchSize : 한번에 처리할 이벤트
-
hdfs.useLocalTimeStampe=true
-
true: 현재 날짜를 변수처럼 사용가능
-
ex) hdfs://hadoop01:9000/tomcat/log/%Y/%m/%d
-
-
-
-
shell 실행 명령어를 이용해서 hdfs에 적재
-
source
-
type=exec
-
[속성]
-
shell=shell종류 명시
-
/bin/bash -c
-
-
command=shell명령어
-
-
-
was의 로그파일이 저장되는 위치에서 hadoop의 hdfs로 이동
-
머신 -> 머신
flume -> flume
was -> namenode
설정파일1 설정파일1
-
다운로드 및 설치
-
버전에 맞게 다운
-
링크로 다운로드
-
압축 풀기
-
설정
flume 설정
-
설정파일 생성
-
실행 확인
-
flume 이 실행 중이어야 한다.
Telnet설치
-
telnet prompt가 뜨는지 확인
Telnet에서 전송한 메시지 받기
-
설정 등록
-
실행
-
텔넷에서 메시지 전송
-
flume에서 확인
폴더에 저장된 파일 가져오기
-
설정 파일 복사(hadoop 계정에서 실행)
-
input, output 폴더 생성
-
source에 대한 정보
-
sink에 대한 정보
-
file-roll : 로컬 저장소에 저장
-
설정
-
flume실행
-
input 폴더에 파일 넣기
-
flume을 통해 작업이 완료되면 파일 이름에 COMPLETED 생김
-
output 폴더에 저장된 파일 확인
-
conf 디렉토리에서 실행 했으므로 conf 폴더 안에 logs 폴더가 생성
-
오류가 나면 logs에서 확인 할 수 있다.
'Hadoop' 카테고리의 다른 글
빅데이터 플랫폼 구축 #14 - 커스터마이징(1) : Combiner (0) | 2020.10.18 |
---|---|
빅데이터 플랫폼 구축 #13 - Flume (2) (0) | 2020.10.11 |
빅데이터 플랫폼 구축 #11 - Sqoop (0) | 2020.10.10 |
빅데이터 플랫폼 구축 #10 - Mapreduce : 다중 값 출력 (0) | 2020.10.07 |
빅데이터 플랫폼 구축 #9 - 이클립스에서 namenode 연결, 하둡 사용 (0) | 2020.10.07 |
- Total
- Today
- Yesterday
- Flume
- vmware
- RAID Architecture
- Free space management
- jdbc
- Variable allocation
- Replacement Strategies
- SQL
- mapreduce
- aop
- oracle
- linux
- File Protection
- Java
- Spring
- Allocation methods
- springboot
- SPARK
- maven
- I/O Mechanisms
- JSON
- HDFS
- Disk System
- gradle
- I/O Services of OS
- Disk Scheduling
- 빅데이터 플랫폼
- hadoop
- 빅데이터
- 하둡
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |