아래 실습은 Kafka를 사용하여 bank_income CSV 파일에서 고객 정보를 읽어와, 소득이 $120K 이상인 고객 정보를 필터링하고, 이를 새로운 CSV 파일에 저장하는 프로그램 실습입니다.
•
Git Clone directory
git clone https://github.com/lonannn/boaz-kafka-practice.git
Shell
복사
docker-compose.dev.yml
producer.py
consumer.py
•
터미널로 git clone 받은 디렉토리에서, boaz-kafka-practice 디렉토리로 이동. docker-compose 파일이 존재하는 taehyung 디렉토리까지 이동한 후, ls 을 통해 kafka 실습 파일 두 가지가 제대로 있는지 확인. (도커 파일 1개, python-kafka 폴더 1개)
thjeong@jsjeongui-MacBook-Pro AMA % ls
boaz-kafka-practice
thjeong@jsjeongui-MacBook-Pro AMA % cd boaz-kafka-practice
thjeong@jsjeongui-MacBook-Pro boaz-kafka-practice % ls
README.md taehyung
thjeong@jsjeongui-MacBook-Pro boaz-kafka-practice % cd taehyung
thjeong@jsjeongui-MacBook-Pro taehyung % ls
docker-compose.dev.yml python-kafka
JavaScript
복사
./taehyung
├── docker-compose.dev.yml
└── python-kafka
├── Dockerfile
├── bank_income.csv
├── consumer.py
└── producer.py
Shell
복사
•
docker-compose.dev.yml 실행
docker-compose -f docker-compose.dev.yml up
JavaScript
복사
•
kafka 컨테이너가 정상적으로 작동되는걸 확인하면, 터미널창 2개를 추가로 열어준다.
◦
producer 실행용 터미널 1개 / consumer 실행용 터미널 1개
•
Docker Container(kafka) 접속
# 실행중인 도커 컨테이너 일련번호 조회
docker ps
JavaScript
복사
# kafka 컨테이너에 접속하기 위해 NAMES에 kafka라고 표시된 컨테이너의 일련번호를
{접속하고자 하는 컨테이너 번호} 자리에 적어준다. 위의 경우, bec2fd079cd7이 해당된다.
*** 사람마다 docker ps를 통해 조회된 컨테이너 일련번호는 다르기 때문에 잘 확인할 것 ***
# 원하는 도커 컨테이너 접속 명령어
docker exec -it {접속하고자 하는 컨테이너 번호} /bin/bash
JavaScript
복사
( 정상적으로 kafka 컨테이너에 접속하면, 아래와 같은 화면이 나옴 )
•
컨테이너 내부에 “bank” 라는 토픽 생성
# bank 토픽 생성하기
kafka-topics --create --topic bank --bootstrap-server localhost:29092 --partitions 1 --replication-factor 1
>> Created topic bank.
# video 토픽 삭제하기
kafka-topics --bootstrap-server kafka:19092 --delete --topic video
# video 토픽 생성하기
kafka-topics --create --topic video --bootstrap-server kafka:19092 --partitions 3 --replication-factor 1
# bank, video 토픽 리스트업하기
kafka-topics --list --bootstrap-server kafka:19092
>> bank, video
JavaScript
복사
•
python-kafka 컨테이너 접속 후 python-kafka 폴더로 이동
docker exec -it python-kafka /bin/bash
$ ls
>> docker-compose.yml python-kafka
$ cd python-kafka/
Shell
복사
◦
producer 실행
▪
python3 producer.py
◦
consumer 실행
▪
python3 consumer.py
•
최종 실행 결과: 작업 디렉토리에 high_income_customers.csv 파일이 생성되면 성공한 것이다.
•
docker-compose 깔끔하게 제거하기
# Docker Compose를 사용하여 실행 중인 모든 컨테이너를 강제로 제거하고, 관련된 네트워크와 볼륨을 함께 삭제하는 명령어
docker-compose rm -fsv
-f: Forces the removal of containers without prompting for confirmation.
>> 실행 중인 컨테이너를 강제로 종료하고 제거합니다.
-s: Stops containers before removing them.
>> 컨테이너를 삭제하기 전에 컨테이너를 정지시킵니다.
-v: Removes any anonymous volumes attached to containers.
>> 컨테이너와 연결된 볼륨을 삭제합니다. 볼륨이 삭제되면 해당 데이터가 완전히 사라질 수 있다.
Shell
복사