개인(팀) 프로젝트/기타 프로젝트 & 활동

07. 플럼(flume)을 통한 빅데이터 수집

한소희DE 2021. 6. 17. 19:12

 

안녕하세요 한소희입니다. 공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. 감사합니다.

 

 

앞서 이번 프로젝트에서 우리는 working 파일 밑에 로그 시뮬레이터를 설치했다. draw.io로 그림을 그려보면 아래와 같다.

 

 

뭔가 그림이 이상한데 (?) ㅋㅋ 로그 시뮬레이터를 실행하면 거기서 나오는 데이터가, 만들어진 폴더에 각각 저장되는 시스템이다. 배치 로그 데이터는 SmartCar 폴더에, 리얼타임 로그 데이터는 driver-realtime-log에 저장된다.

앞선 포스팅을 보면 이해가 더욱 잘 된다.

 

⬇ 이전 포스팅 링크

https://eng-sohee.tistory.com/58

 

03. 로그 시뮬레이터 설치

오늘은 로그 시뮬레이터를 설치해 볼 것이다. 사실 로그 시뮬레이터는 강의에서 이미 만들어진 것을 가져와, 파일 질라를 통해 업데이트하고 잘 업데이트가 되었는지 확인하는 것이 전부다. 따

eng-sohee.tistory.com

 

 

그럼 한번 로그 시뮬레이터를 실행해보겠다.

 

 

 

 

 

 

 

 

 

 

 

목차

로그 시뮬레이터 실행

생성된 파일을 플럼으로 수집하는 방법

수집 과정 검토

 

 


 

 

1. 로그 시뮬레이터 실행

 

한번 2016년 1월 1일에 발생한 3대 스마트카에 대한 정보를 생성해 저장해보겠다.

우선, 로그시뮬레이터 위치에 접속해 백그라운드 실행을 수행한다.

 

cd /home/pilogt-pjt/working

java -cp bigdata.smartcar.loggen-1.0.jar com.wikibook.bigdata.smartcar.loggen.CarLogMain 20160101 3 &

java -cp bigdata.smartcar.loggen-1.0.jar com.wikibook.bigdata.smartcar.loggen.DriverLogMain 20160101 3 &

 

잘 들어갔는지 확인해보려면, SmartCar 폴더에 들어가서 txt 파일이 생성됐는지 보면 된다.

 

 

 

1) 배치파일 확인

 

위 명령어들을 실행하면 위와 같은 파일을 읽을 수 있다.

 

 

2) 실시간 파일 확인

경로는 위와 동일하되, 마지막 경로만 driver-realtime-log 폴더로 실행해준다.

 

그 후, ls -ltr을 하면 새로고침 할 때마다 파일이 수 개씩 생기는 것을 알 수 있다.

이를 읽어들이려면 아래와 같은 코드를 작성한다.

 

tail -f SmartCarDriverInfo.log

 

 

 

코드를 수행한 결과는, 위와 같다.

이로써, 로그시뮬레이터를 실행이 완료됐다.

 

 

 

 

2. 생성된 파일을 플럼으로 수집하는 방법

 

2-1. 배치 파일 수집 - 파일 위치 변경

SmartCar 경로에 생긴 배치 로그 파일을 SmartCarInfo 에이전트의 SpoolDir 경로로 옮겨준다.

mv /home/pilot-pjt/working/SmartCar/SmartCarStatusInfo_20160101.txt /home/pilot-pjt/working/car-batch-log/

 

 

2-2. 리얼타임 파일 수집 - 카프카 토픽 활성화

우선 새로운 PuTTY창을 열어 카프카를 아래 코드를 통해 실행시켜준다. 즉, 우리가 사용할 토픽을 활성화시켜준다는 의미다.

kafka-console-consumer --bootstrap-server server02.hadoop.com:9092 --topic SmartCar-Topic --partition 0
중간에 오류가 날 때는?

중간에 오류나서 참 헤맸는데, 방법은 생각보다 쉬웠다.
제일 먼저 클라우데라 매니저에서, 앞서 설정한 값들이 적용되도록 플럼을 재시작해준다. 그후 클라우데라 매니저, 서버가 활성화됐는지 확인해준다.

그러면 정상적으로 위처럼 잘 작동되는 것을 알 수 있다.

 

 

 

03. 수집 과정 검토

3-1. 배치파일 수집 검토

이제 아까 SpoolDir로 옮긴 배치 데이터(스마트카 상태 정보 로그파일)가 플럼으로 잘 전송되고 있는지 아래 명령어를 통해 확인한다.

tail -f /var/log/flume-ng/flume-cmf-flume-AGENT-server02.hadoop.com.log

 

 

❓❗ 플럼 수집 에러 발생

 

플럼에 잘 전송되지 않을 땐 각 파일의 접근권한을 확인해보자. 여기서 spooldir이 작동할 때는 root 계정으로 작동되지 않아서, 읽기 권한만 있으면 안 된다. 쓰기 권한 설정이 필요하다. 따라서 쓰기 권한을 주기 위한 명령어를 작성해준다.

 

# 에러 해결방법
chmod 777 -R working

 

 

3-2. 리얼타임 파일 수집 검토

 

이건 카프카를 통해 들어오므로, 카프카의 컨슈머 콘솔 창을 확인해 잘 나타나고 있는지 확인하면 된다.

kafka-console-consumer --bootstrap-server server02.hadoop.com:9092 --topic SmartCar-Topic --partition 0

 

초단위로 잘 수집이 되어가고 있으면 아주 성공이다! 이제 수집 프로세스가 마무리됐다.

 

이제 적재 프로세스를 구현하러 가보아야겠다.