Flume(with Kafka)
Flume은 대규모 데이터 처리를 위한 분산형 데이터 수집 도구입니다. Flume은 데이터를 수집하고 처리하여 저장소 또는 전송 수단으로 전송합니다.
Flume은 다양한 데이터 소스 (예 : 로그 파일, 소켓 등)에서 데이터를 수집하고, 이를 다양한 대상 (예 : HDFS, Kafka 등)으로 전송할 수 있습니다. Flume은 이러한 과정에서 데이터를 중간 단계에서 필터링하거나 변환할 수도 있습니다. Flume은 Kafka와 자주 사용됩니다.
Kafka는 분산형 스트리밍 플랫폼으로, 대용량 실시간 데이터 스트리밍 및 처리에 사용됩니다. Kafka는 대규모의 메시지를 안정적이고 신뢰성 높은 방식으로 처리하며, 다양한 데이터 소스에서 데이터를 수집하고 다양한 대상으로 전송할 수 있습니다.
Flume과 Kafka는 데이터를 수집하고 전송하는 과정에서 유사한 역할을 수행하지만, Flume은 주로 데이터 수집 및 전처리에 중점을 둔 반면 Kafka는 데이터 전송 및 처리에 중점을 둡니다. 또한 Flume은 별도의 데이터 스토리지를 필요로하지 않으며, Kafka는 대용량의 데이터 스트림을 저장할 수 있는 분산형 스토리지를 제공합니다.
Flume은 데이터를 수집하고 Kafka로 전송하거나, Kafka는 Flume으로부터 데이터를 수신하고 처리할 수 있습니다. 이를 통해 데이터의 안정적이고 신뢰성 높은 전송 및 처리가 가능해집니다. 금일 포스팅에선, Flume을 분산환경에 설치해보겠습니다.
(1) Webserver : 웹서버는 log 파일을 제공합니다. 정확히 말하자면 웹서버로부터 log 파일을 끌어오는 구조입니다.
(2) Source : Source는 수집할 데이터를 읽어들일 설정파일의 일부
(3) channel : Queue 자료구조를 이용하고, 데이터를 전송하는데 있어서 개수와 같은 설정파일을 관리
(4) Sink : 실제 데이터를 저장할 공간 (e.g. HDFS, MongoDB, File(TxT, CSV))의 위치를 저장하는 곳
(5) agent : 스케줄링을 할 수 있습니다. 예를 들면, 5분에 한번씩 로그 데이터를 하둡 파일시스템에 저장하는 방식이 가능합니다.
보통 데이터웨어하우스에 적재할 때는, HDFS에 저장하고 TRANSFORM 단계 이후, 데이터웨어하우스로 적재하는 방식을 사용합니다.
Flume 설치
(1) 먼저 원하는 폴더에 flume을 다운로드 합니다.
wget http://archive.apache.org/dist/flume/1.9.0/apacheflume-1.9.0-bin.tar.gz
(2) 다운로드 받은 flume 압축 파일을 해제합니다.
tar –xvf apache-flume-1.9.0-bin.tar.gz
(3) 디렉토리 이름을 변경합니다.
mv apache-flume-1.9.0-bin flume
(4) 샘플 설정 파일을 확인합니다.
cd flume/conf/
sudo gedit flume-conf.properties.template
(5) Flume 설정 템플릿 파일을 복사합니다.
cp flume-env.sh.template flume-env.sh
(6) Flume 설정 파일의 JAVA-HOME 경로를 수정합니다.
sudo gedit flume-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
Flume 설치 확인
(1) 사용할 conf 템플릿 복사합니다.
cp flume-conf.properties.template flume-conf.properties
(2) 실행합니다.
cd ../bin
./flume-ng agent -c ../conf/ --conf-file ../conf/flume-conf.properties --name agent -Dflume.root.logger=INFO,console
(3) 결과를 확인합니다.
수행하면 위쪽 이미지와 같이 단계적으로 증가하는 숫자가 화면에 계속해서 출력됩니다! 확인 후에 CTRL + C로 종료합니다.
NET CAT 서버 예제 실습
(1) flume-conf.properties에 진입해서, 위쪽 이미지와 동일하게 설정합니다. 29번 라인부터 31번까지 추가하시면 됩니다.
cd ../conf/
cp flume-conf.properties flume-conf-netcat.properties
sudo gedit flume-conf-netcat.properties
(2) 설정한 netcat.properties를 통해 서버를 실행합니다.
cd ../bin
./flume-ng agent --conf-file ../conf/flume-conf-netcat.properties --name agent -Dflume.root.logger=INFO,console
(3) 정상적으로 수행되었다면 , [127.0.0.1:44444]로 이벤트 발생을 대기하고 있습니다.
'데이터 엔지니어링 > 하둡 에코 시스템' 카테고리의 다른 글
[MongoDB]pymongo로 간단한 프로그램 만들기 (3) | 2023.05.18 |
---|---|
[MONGODB] 몽고DB 로컬에 설치하고 파이썬 연동하기 (0) | 2023.05.18 |
[HIVE] 기본 개념 및 실습 (0) | 2023.05.16 |
[PIG] 기본 개념 및 실습 (0) | 2023.05.12 |