2020. 4. 20. 22:05ㆍDevelopment/[Dev] 개발일반
나중을 위해서라도 기본 환경에서 크게 벗어나지 않은 심플(하지 않지만..)버전의 플룸의 설치와 설정, sink를 기록해본다..
아래 전부는 mac 환경을 기준으로 하고 있다.
"1 소스 - 1채널 - 1싱크" 구조의 로컬 테스트를 위한 전체적인 셋팅 순서.
(1) flume 설치
(2) 맥 환경변수 설정 / flume 실행 스크립트 내의 변수 설정
(3) flume의 기본 설정파일을 복사해서 수정
(4) flume 실행
(5) "데이터 소스 연결" : 로컬 환경에서 flume쪽으로 정보를 전송해서 수신하는지 확인
(1) flume 설치 - homebrew를 통해서 설치
1) 홈브류(HomeBrew) 레파지토리 최신화
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
2) flume 설치
$ brew install flume
*. 이 과정에서 자바 jdk와 하둡이 설치됨 (Installing dependencies for flume: openjdk and hadoop)
(2) 맥 환경변수 설정 / flume 실행 스크립트 내의 변수 설정
1) 맥 환경변수 설정
*.FLUME_HOME 등 꼭 필요한 환경변수 들을 맥의 환경 변수에 설정해야 추후 정상 구동됨
$ vi ~/.bash_profile
export FLUME_VERSION=설치된버전명
export FLUME_HOME=/usr/local/Cellar/flume/설치된버전명/libexec
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$FLUME_HOME/bin:$PATH
------------------------------------------------------------
:wq!
$ source ~/.bash_profile
2) flume 실행 스크립트 내의 JAVA_HOME 변수 설정
*. 맥의 전역 환경변수에 자바 홈이 셋팅되어 있어도 여기에서 셋팅을 또 해야 오류가 발생하지 않는 듯..
$ cd $FLUME_HOME/conf
$ cp flume-env.sh.template flume-env.sh
$ vi flume-env.sh
# export JAVA_HOME=/usr/lib/jvm/java-8-oracle
부분을 찾아서 주석제거 및 실제 JAVA_HOME 으로 변경
-------------------------------------------
:wq!
(3) flume의 기본 설정파일을 복사해서 일부 수정
1) flume.conf 만들기
$ cd $FLUME_HOME/conf
$ cp flume-conf.properties.template flume.conf
2) flume.conf 파일 수정
$ vi flume.conf
agent.source = seqGenSrc
agent.channels = hdfschannel
agent.sinks = loggerSink
agent.sources.seqGenSrc.type = seq
agent.sources.seqGenSrc.channels = hdfschannel
agent.sinks.loggerSink.type = logger
agent.sinks.loggerSink.channel = hdfschannel
agent.channels.hdfschannel.type = memory
agent.channels.hdfschannel.capacity = 100
-------------------------------------------------
:.,$d 또는 수정모드에서 gg dG 입력하여 기존 내용 전체 삭제 후..
:wq!
+ multiplexing 환경으로 구성시
agent.sources = source1
agent.sinks = mongoSink hdfsSink
agent.channels = mongoChannel hdfsChannel
agent.sources.source1.channels = mongoChannel hdfsChannel
agent.sinks.mongoSink.channel = mongoChannel
agent.sinks.hdfsSink .channel =hdfsChannel
agent.sources.source1.selector.type = multiplexing
agent.sources.source1.selector.header = status
agent.sources.source1.selector.mapping.all = mongoChannel hdfsChannel
agent.sources.source1.selector.mapping.mongo = mongoChannel
agent.sources.source1.selector.mapping.hdfs = hdfsChannel
+ kafkaSink로 구성시 (참조 www.flume.apache.org/FlumeUserGuide.html#kafka-source )
agent.sources = source1
agent.channels = channel1
agent.sinks = sink1
agent.source1.k1.type = org.apache.flume.sink.kafka.KafkaSink
agent.source1.k1.kafka.topic = sentilab
agent.source1.k1.kafka.bootstrap.servers = data1:9092,data2:9092,data3:9092,data4:9092
agent.source1.k1.kafka.flumeBatchSize = 1000
agent.source1.k1.kafka.producer.acks = 1
agent.source1.k1.kafka.producer.linger.ms = 10
agent.source1.k1.channel = channel1
agent.channels.channel1.type = memory
(4) flume 실행
$ $FLUME_HOME/bin/flume-ng agent -c conf/ --conf-file flume.conf --name agent -Dflume.root.logger=INFO,console
주의
*. 이미 conf 디렉토리에 위치해있다면 위의 flume.conf 부분을 flume.conf 으로 그대로 하고 다른 디렉토리이면 conf/flume.conf 또는 ./conf/flume.conf 으로해서 상대경로 주의
*. INFO node.Application: Starting Sink loggerSink
(5) "데이터 소스 연결" : 로컬 환경에서 flume쪽으로 정보를 전송해서 수신하는지 확인
1) 새로운 터미널 창에서 flume-conf-netcat.properties 만들기
$ cd $FLUME_HOME/conf
$ cp flume-conf.properties.template flume-conf-netcat.properties
2) flume-conf-netcat.properties 파일 수정
agent.sources = s1
agent.channels = c1
agent.sinks = k1
agent.sources.s1.type = netcat
agent.sources.s1.bind = localhost
agent.sources.s1.port = 9090
agent.sources.s1.channels = c1
agent.sinks.k1.type = logger
agent.sinks.k1.channel = c1
agent.channels.c1.type = memory
-----------------------------------------
:.,$d 또는 수정모드에서 gg dG 입력하여 기존 내용 전체 삭제 후..
:wq!
3) flume-conf-netcat 파일 실행 - 서버 응답상태가 됨
$ $FLUME_HOME/bin/flume-ng agent -c conf/ --conf-file flume-conf-netcat.properties --name agent -Dflume.root.logger=INFO,console
주의
*. 이미 conf 디렉토리에 위치해있다면 위의 flume-conf-netcat.properties 부분을 flume-conf-netcat.properties 으로 그대로 하고 다른 디렉토리이면 ./conf/flume-conf-netcat.properties 또는 /conf/flume-conf-netcat.properties 으로 상대경로 주의
*. 정상 구동시 : Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:9090]
4) 텔넷으로 정보 생성
1. telnet 설치
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install telnet
2. 새로운 터미널창에서 telnet 실행 (여기까지 총 터미널 창이 3개(1. 플룸 2. 로그 싱크 3. 텔넷)가 됨)
$ telnet localhost 9090
Trying ::: 1…
telnet : connect to address::1: Connection refused
Trying 127.0.0.1 …
Connected to localhost.
Escape character is ‘^]’.
텍스트를 입력하고 엔터를 눌러보면 아래처럼 OK 문구가 나옴
OK
*. 위처럼 flume 실행 터미널에 문구를 작성하고 엔터를 눌렀다면
org.apache.flume.sink.LoggerSink.process(LoggerSink.java:70)} Event: { headers:{} body : .... } 이 출력됨
loggerSink 성공....어렵다..
'Development > [Dev] 개발일반' 카테고리의 다른 글
Flume 설치 및 기본 설정, sink 테스트 - mongoDB sink 2 of 2 (0) | 2020.04.24 |
---|---|
Flume 설치 및 기본 설정, sink 테스트 - mongoDB sink 1 of 2 (0) | 2020.04.21 |
모바일앱의 필수개념, 프로세스와 쓰레드 (0) | 2020.04.16 |
Xcode의 유용한 단축키 (0) | 2020.02.28 |
[블록체인] 블록체인 관련 오픈소스, 예제, 샘플 사이트 소개합니다. (2) | 2018.07.05 |