SlideShare a Scribd company logo
1 of 29
Download to read offline
Kafka를 이용한 매체 전송
AI + X SUMMER CAMP 2021
1
강의 개요
1⃣ Kafka 소개, 설치 및 실행
2⃣ Kafka와 OpenCV를 사용한 Pi 카메라 영상 스트리밍
2
1⃣
2⃣
3⃣
4⃣
4⃣
Kafka를 소개하고, Kafka를 사용해 Raspberry Pi에서 터미널에 입력한 문자를 NUC에서 받아 볼 수 있도
록 합니다
강의 개요 (1) - Kafka 메시지 전송
3
1⃣
2⃣
3⃣
4⃣
4⃣
강의 개요 (1) - Kafka 메시지 전송 with Python
4
Kafka와 Python을 사용해 Raspberry Pi에서 터미널에 입력한 문자를 NUC에서 받아 볼 수 있도록 합니다
Kafka를 사용해 Raspberry Pi Camera로부터의 영상을 NUC에서 받아 볼 수 있도록 합니다
강의 개요 (2) - Kafka 영상 전송 with Python
5
1⃣
2⃣
3⃣
4⃣
4⃣
실험 목표
•여러 가지 애플리케이션, 프로세스 사이에 메시지를 전달하는 데에 쓰이는 Kafka를 알아봅니다
•Kafka의 특징과 사용되는 이유, 실제 예시를 이해합니다
•Kafka를 사용해 Pi로부터 NUC으로 콘솔창 입력을 보냅니다.
•Kafka의 Python 라이브러리를 살펴봅니다
•Kafka를 사용해 Pi의 카메라에서부터 NUC으로 영상을 전송합니다
•Kafka라는 도구는 메시징 시스템으로, 둘 사이의 메시지를 전송하는 역할을 해줍니다! 사용해
볼까요?
6
7
Python 패키지 설치, 파일 다운로드, 코드 관리 도구
• pip은 Python으로 작성된 패키지
소프트웨어를 설치하고 삭제하는
패키지 관리 시스템입니다. PyPI
(Python Package Index)에서 패
키지들을 찾을 수 있습니다
• pip3 install로 Python3의 패키진
를 설치할 수 있습니다
• pip3 install -r [파일]: 파일에 쓰
여 있는 패키지를 설치합니다
• wget은 웹서버로부터 콘텐츠를 가
져오는 컴퓨터 프로그램입니다
• 파일의 url을 인자로 주어 해당 링
크의 파일을 다운로드 받을 수 있
습니다
• git은 소스코드를 효과적으로 관리
할 수 있게 해주는 소프트웨어입니
다. 버전 관리를 위해 사용됩니다
• Github은 저장된 소스 코드를 호
스팅해주는(보여주는) 웹사이트입
니다. 다양한 프로젝트 소스 코드
들을 확인할 수 있습니다
• git clone 명령어로 Github의 코
드를 가져올 수 있습니다.
Kafka 소개
Kafka란 무엇이고, 어떤 특징을 지
니고 있는지 설명합니다
8
Kafka 란?
9
•Kafka는 발행-구독(pub-sub) 모델의 메시징 시스템입니다
•발행-구독 모델이란, 여러 원천 애플리케이션/프로세스에서 생성되는 데이터(메시지/로그)들이 데이터를
소비할 애플리케이션/프로세스로 직접 연결되어 전달되는 대신, 해당 데이터를 분류에 맞게 발행(publish)
하고 그 분류 주제를 구독(subscribe)하고 있는 곳에서 받아가 사용하는 모델입니다
•애플리케이션이 복잡해질수록 더 많은 데이터가 오고 가야 하고, 이를 클러스터로 운영해 체계적이고 안전
하게 스트리밍할 수 있는 플랫폼으로 나온 것이 Kafka입니다
Kafka의 구조
10
참고 자료: https://medium.com/@umanking/카프카에-대해서-이야기-하기전에-먼저-data에-대해서-이야기해보자-d2e3ca2f3c2
- Broker: 클라이언트로부터의 요청을 처리하고, 데이터를 복제합니다
- ZooKeeper: Broker와 topic들, 사용자들 클러스터의 상태를 유지합니다
- Topics: 들어오는 메시지들을 분류합니다
- Producers: 메시지를 broker에 보냅니다
- Consumers: 메시지를 broker로부터 구독하고 소비합니다
•초당 1000개 이상의 메시지를 전송할 수 있는 처리량을 제
공합니다
•메시지를 처리하는 데 발생하는 지연 시간이 적습니다
•확장 하기 쉽습니다 (분산 클러스터에 특화되어 있습니다)
•메시지가 손실되지 않도록 관리해줍니다
•생산자-사용자 사이의 메시지 전달, 웹사이트 동작 확인, 데
이터 수집 및 모니터링, 스트리밍 데이터 처리, 시간 순 상
태 변경 기록, 커밋 로그 등의 기능이 있습니다
•Netflix, Uber 등 많은 대규모 서비스에서 실제로 Kafka가
사용되고 있습니다
Kafka의 특징
11
Kafka 실행
Kafka를 설치하고 실행해
콘솔창의 메시지를 전송합니다
12
필요한 패키지 설치
13
NUC의 터미널에서
설치해 주세요
Python3 라이브러리 설치 도구를 설치합니다
Kafka 실행을 위해 필요한 jdk를 설치합니다
Python에서 kafka를 실행할 수 있도록 해줍니다
Kafka를 설치합니다
필요한 패키지 설치
14
SSH로 Pi 터미널
에 접속해 동일하게
설치해 주세요
Kafka 실행을 위해 필요한 jdk를 설치합니다
Python에서 kafka를 실행할 수 있도록 해줍니다
Kafka를 설치합니다
Kafka 실행 순서
15
•1. Zookeeper를 켭니다 (Kafka server)
•2. Server(broker)를 켜고 + Kafka topic을 만듭니다 (Kafka server)
•topic은 이벤트들의 분류입니다. 같은 종류=topic의 이벤트들을 함께 묶어서 관리하기 때문
에, 이벤트/메시지를 생성하기 전에 topic을 먼저 만들어야 합니다
•topic은 다시 partition이라는 일정 크기의 조각으로 나뉘어 여러 broker에 복제되어 저장됩
니다
•3. Producer와 Consumer를 켭니다 (Kafka의 Client). Producer는 이벤트를 생성하고,
Consumer는 이벤트를 받아오는 역할을 합니다
Kafka ZooKeeper 실행
16
NUC의 터미널에서
실행해 주세요
•Kafka의 ZooKeeper를 실행해 분산된 메시지
큐의 정보를 관리해줍니다.
•Kafka를 사용하려면 반드시 ZooKeeper를 실
행해야 합니다
17
Kafka Server 실행 NUC의 터미널에서
실행해 주세요
•Kafka의 Server(broker)를 실행해 클라이언트
(producer, consumer)로부터의 발행, 구독, 정보 요청
을 처리하고, 데이터를 topic, partition으로 나누어 복
제하고 저장합니다
•server.properties에서는 broker의 주소를 수정해
NUC 외부 기기인 Pi에서도 접근이 가능하도록 합니다.
NUC IP
터미널에서 새로운 탭을 열어주세요
18
Kafka server.properties 수정 이유 (참고)
•Kafka는 Server(broker)를 실행해 클라이언트
(producer, consumer)로부터의 발행, 구독, 정보 요
청을 처리하고, 데이터를 topic, partition으로 나누
어 복제하고 저장합니다. Bootstrap server는 각
topic에 맞는 broker들의 주소 목록을 갖고 있고, 클
라이언트와 broker를 연결해줍니다
•기본 설정을 사용하면 외부에서 bootstrap-server에
broker의 위치를 물어볼 때, localhost:9092 라는 응
답을 받습니다. Pi에서 NUC의 bootstrap-server
(NUC IP:9092로 입력했음)로 broker의 위치를 물어
보고, 응답받은 주소로 메시지를 전송합니다.
localhost라는 응답을 받으면 Pi의 localhost로 메시
징을 하게 되고, Pi localhost에는 Kafka broker가 없
기 때문에 오류가 납니다
•server.properties의 broker IP를 수정해 NUC 외부
기기인 Pi에서도 접근이 가능해집니다
수정하지 않으면 오류가 나는 이유
19
NUC의 터미널에서
실행해 주세요
•--create로 새로운 topic을 생성함을 밝힙니다
•--topic으로 이름을 지정합니다
•--replication-factor는 메시지의 복제 갯수를,
partitions는 메시지를 몇 개의 broker로 쪼개어 저장
할 것인지를 지정합니다
•--list 옵션으로 만들어진 topic들의 목록을 확인할 수
있습니다
Kafka Topic 생성
•Kafka는 메시지를 topic에 따라 관리합니다. 메시지
를 발행하는 producer도 특정 topic에 대해 메시지
를 발행하고, consumer도 특정 topic을 지정해 그
topic에 대한 메시지들을 구독합니다.
•Topic은 partition으로 나뉘어 broker들에 분산, 복
제되어 저장됩니다
터미널에서 새로운 탭을 열어주세요
NUC IP
NUC IP
20
Pi 콘솔창 입력 메시지 발행, NUC 구독
•"chat" 이라는 topic으로 Pi가 메시지를 발행합니다.
kafka-console-producer.sh 라는 쉘 스크립트를 실행해
Pi의 콘솔(터미널)에 입력한 메시지가 Kafka에 발행되도
록 합니다
•NUC에서 "chat"이라는 topic을 구독하도록 해 Pi가 발행
하는 메시지를 받을 수 있습니다
NUC의 터미널에서
실행해 주세요
NUC IP
SSH로 Pi 터미널
에 접속해 실행해 주
세요
NUC IP
Python Kafka 사용
Python의 Kafka 라이브러리를 활용해
Pi의 콘솔창 입력을 NUC으로 전송합니다
21
Python이란?
•Python은 간결한 코드와 쉬운 문법으로 사람이 읽기 좋게 쓰인 프로그래밍 언어입니다
•인터프리터 언어로 코드를 한 줄씩 실행하고
•다른 언어와 쉽게 통합할 수 있으며
•많은 라이브러리를 갖고 있다는 특징이 있습니다.
•라이브러리는 코드를 작성할 필요 없이 동작을 수행할 수 있게 해주는 변수, 함수, 메소드를 모
아둔 것입니다. 우리가 수행하고자 하는 동작을 처음부터 코드로 작성할 필요 없이, 사전에 정의
된 것을 가져다 쓸 수 있습니다.
•pip, conda 등의 도구로 원하는 라이브러리를 설치할 수 있습니다
•import를 사용해 라이브러리를 불러와 사용할 수 있습니다
22
23
SSH로 Pi 터미널
에 접속해 실행해 주
세요
Pi, NUC에서 서버 주소 전역 환경변수 설정
bashrc 파일을 편집해 환경변수 SERVER_IP에 NUC의 IP 주소를 저장합니다
source를 통해 추가된 환경 변수를 적용합니다
NUC의 터미널에서
실행해 주세요
마지막 줄에 아래와 같이 추가합니다
NUC IP
마지막 줄에 아래와 같이 추가합니다
NUC IP
* 환경변수란, 셸 세션과 작업 환경에 대한 정보를 저장하는 변수입니다. 메모리에 데이터를 저장할 수
있으므로 쉘에서 실행중인 모든 프로그램이나 스크립트가 이 변수에 접근할 수 있습니다. 모든
bash 세션을 시작할 때 설정되는 전역 변수와, 해당 세션 안에서만 정의된 지역 변수가 있습니다
24
Python Kafka Producer
~/
.bashrc
'G' 입력으로 맨 마지막줄로 이동, 아래와 같이 입력해 환경변수 등록
NUC IP
SSH로 Pi 터미널에
접속해 실행하세요
kafka_transmission/console_producer.py
4⃣ ctrl + C 를 눌러 종료하기 전까지, 입력값을 받아
Kafka 메시지로 발행합니다
1⃣ 필요한 라이브러리를 불러옵니다.
* kafka는 앞서 pip3로 설치한 kafka-python
3⃣ Kafka producer를 정의합니다
2⃣ 환경변수에 저장된 Broker 서버 IP 주소를 가져옵니다
2⃣ python 실행시 topic을 인자로 받습니다.
ex) python3 console_consumer.py --topic 'my_topic'
25
Python Kafka Consumer NUC의 터미널에서
실행해 주세요
~/.bashrc 의 SERVER_IP에 NUC의 IP 값을 적어 넣습니다
1⃣ 필요한 라이브러리를 불러옵니다.* kafka는 앞서 pip3로
설치한 kafka-python
2⃣ 환경변수에 저장된 Broker 서버 IP 주소를 가져옵니다
3⃣ Kafka consumer를 정의합니다
4⃣ Broker에서 메시지를 받아오고 출력합니다
2⃣ python 실행시 topic을 인자로 받습니다.
ex) python3 console_consumer.py --topic 'my_topic'
kafka_transmission/console_consumer.py
NUC IP
Pi -> NUC
카메라 영상 전송
Pi에서 NUC으로 카메라 영상을 전
송합니다.Kafka, kafka-python,
opencv를 사용합니다.
26
27
Kafka setup NUC의 터미널에서
실행해 주세요
•Kafka Zookeeper가 켜져 있는지 확인합니다
•Kafka Broker(Server)가 켜져 있는지 확인합니다
•켜져 있지 않다면 Kafka ZooKeeper 실행, Kafka Server 실행 페이지를 보고 다시 실행합니다.
•비디오 송수신을 위해 새로운 "pi-video" 라는 새로운 Kafka topic을 생성합니다
NUC IP
NUC IP
NUC IP
28
Python Kafka Producer SSH로 Pi 터미널에
접속해 실행하세요
kafka_transmission/video_producer.py
4⃣ ctrl + C 를 눌러 종료하기 전까지, 입력값을 받아
Kafka 메시지로 발행합니다
1⃣ 필요한 라이브러리를 불러옵니다.
* kafka는 앞서 pip3로 설치한 kafka-python
3⃣ Kafka producer를 정의합니다
2⃣ 환경변수에 저장된 Broker 서버 IP 주소를 가져옵니다
2⃣ python 실행시 topic을 인자로 받습니다.
ex) python3 console_consumer.py --topic 'my_topic'
- Raspberry Pi는 비디오 프레임을 발행하는 producer
입니다
- AI_X_SUMMER_2021/kafka_transmission 디렉토
리로 가세요 (이미 그 위치라면 이동 필요 없음)
- video_producer.py 파일을 실행하세요
- NUC 은 video frame을 소비합니다
- AI_X_SUMMER_2021/kafka_transmission 디
렉토리로 가세요 (이미 그 위치라면 이동 필요 없
음)
- video_consumer.py 파일을 실행하세요
29
Python Kafka Consumer NUC의 터미널에서
실행해 주세요
kafka_transmission/video_consumer.py
1⃣ 필요한 라이브러리를 불러옵니다.* kafka는 앞서 pip3로
설치한 kafka-python
2⃣ 환경변수에 저장된 Broker 서버 IP 주소를 가져옵니다
3⃣ Kafka consumer를 정의합니다
4⃣ Broker에서 메시지를 받아오고 출력합니다
2⃣ python 실행시 topic을 인자로 받습니다.
ex) python3 console_consumer.py --topic 'my_topic'

More Related Content

What's hot

Cloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_serviceCloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_serviceDennis Hong
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker, Inc.
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
Cilium - Network security for microservices
Cilium - Network security for microservicesCilium - Network security for microservices
Cilium - Network security for microservicesThomas Graf
 
Linux Container Technology 101
Linux Container Technology 101Linux Container Technology 101
Linux Container Technology 101inside-BigData.com
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes NetworkingCJ Cullen
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overviewGabriel Carro
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPThomas Graf
 
At the core you will have KUSTO
At the core you will have KUSTOAt the core you will have KUSTO
At the core you will have KUSTORiccardo Zamana
 
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...Amazon Web Services Korea
 
Container Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyondContainer Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyondKubeAcademy
 
MQTT and SensorThings API MQTT Extension
MQTT and SensorThings API MQTT ExtensionMQTT and SensorThings API MQTT Extension
MQTT and SensorThings API MQTT ExtensionSensorUp
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingSreenivas Makam
 
Apache kafka 관리와 모니터링
Apache kafka 관리와 모니터링Apache kafka 관리와 모니터링
Apache kafka 관리와 모니터링JANGWONSEO4
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetesKrishna-Kumar
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...Chris Richardson
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
Kubernetes
KubernetesKubernetes
Kuberneteserialc_w
 
Kubernetes
KubernetesKubernetes
KubernetesHenry He
 

What's hot (20)

Cloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_serviceCloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_service
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
Cilium - Network security for microservices
Cilium - Network security for microservicesCilium - Network security for microservices
Cilium - Network security for microservices
 
Linux Container Technology 101
Linux Container Technology 101Linux Container Technology 101
Linux Container Technology 101
 
Ingress overview
Ingress overviewIngress overview
Ingress overview
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes Networking
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overview
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDP
 
At the core you will have KUSTO
At the core you will have KUSTOAt the core you will have KUSTO
At the core you will have KUSTO
 
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
 
Container Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyondContainer Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyond
 
MQTT and SensorThings API MQTT Extension
MQTT and SensorThings API MQTT ExtensionMQTT and SensorThings API MQTT Extension
MQTT and SensorThings API MQTT Extension
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes Networking
 
Apache kafka 관리와 모니터링
Apache kafka 관리와 모니터링Apache kafka 관리와 모니터링
Apache kafka 관리와 모니터링
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetes
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Kubernetes
KubernetesKubernetes
Kubernetes
 

Similar to [ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결 kafka를 이용한 매체 전송

[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기Hyperledger Korea User Group
 
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postK8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postInho Kang
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개태준 문
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...Cloud-Barista Community
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-HelmSK Telecom
 
Open stack summit_barcelona_보고서
Open stack summit_barcelona_보고서Open stack summit_barcelona_보고서
Open stack summit_barcelona_보고서Yongyoon Shin
 
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)Ubuntu Korea Community
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - WebinarNAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
 
Apache kafka 확장과 응용
Apache kafka 확장과 응용Apache kafka 확장과 응용
Apache kafka 확장과 응용JANGWONSEO4
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetesSangSun Park
 
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 KubernetesTommy Lee
 

Similar to [ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결 kafka를 이용한 매체 전송 (20)

KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postK8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_post
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm
 
Open stack summit_barcelona_보고서
Open stack summit_barcelona_보고서Open stack summit_barcelona_보고서
Open stack summit_barcelona_보고서
 
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3
 
Apache kafka 확장과 응용
Apache kafka 확장과 응용Apache kafka 확장과 응용
Apache kafka 확장과 응용
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetes
 
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
 

[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결 kafka를 이용한 매체 전송

  • 1. Kafka를 이용한 매체 전송 AI + X SUMMER CAMP 2021 1
  • 2. 강의 개요 1⃣ Kafka 소개, 설치 및 실행 2⃣ Kafka와 OpenCV를 사용한 Pi 카메라 영상 스트리밍 2 1⃣ 2⃣ 3⃣ 4⃣ 4⃣
  • 3. Kafka를 소개하고, Kafka를 사용해 Raspberry Pi에서 터미널에 입력한 문자를 NUC에서 받아 볼 수 있도 록 합니다 강의 개요 (1) - Kafka 메시지 전송 3 1⃣ 2⃣ 3⃣ 4⃣ 4⃣
  • 4. 강의 개요 (1) - Kafka 메시지 전송 with Python 4 Kafka와 Python을 사용해 Raspberry Pi에서 터미널에 입력한 문자를 NUC에서 받아 볼 수 있도록 합니다
  • 5. Kafka를 사용해 Raspberry Pi Camera로부터의 영상을 NUC에서 받아 볼 수 있도록 합니다 강의 개요 (2) - Kafka 영상 전송 with Python 5 1⃣ 2⃣ 3⃣ 4⃣ 4⃣
  • 6. 실험 목표 •여러 가지 애플리케이션, 프로세스 사이에 메시지를 전달하는 데에 쓰이는 Kafka를 알아봅니다 •Kafka의 특징과 사용되는 이유, 실제 예시를 이해합니다 •Kafka를 사용해 Pi로부터 NUC으로 콘솔창 입력을 보냅니다. •Kafka의 Python 라이브러리를 살펴봅니다 •Kafka를 사용해 Pi의 카메라에서부터 NUC으로 영상을 전송합니다 •Kafka라는 도구는 메시징 시스템으로, 둘 사이의 메시지를 전송하는 역할을 해줍니다! 사용해 볼까요? 6
  • 7. 7 Python 패키지 설치, 파일 다운로드, 코드 관리 도구 • pip은 Python으로 작성된 패키지 소프트웨어를 설치하고 삭제하는 패키지 관리 시스템입니다. PyPI (Python Package Index)에서 패 키지들을 찾을 수 있습니다 • pip3 install로 Python3의 패키진 를 설치할 수 있습니다 • pip3 install -r [파일]: 파일에 쓰 여 있는 패키지를 설치합니다 • wget은 웹서버로부터 콘텐츠를 가 져오는 컴퓨터 프로그램입니다 • 파일의 url을 인자로 주어 해당 링 크의 파일을 다운로드 받을 수 있 습니다 • git은 소스코드를 효과적으로 관리 할 수 있게 해주는 소프트웨어입니 다. 버전 관리를 위해 사용됩니다 • Github은 저장된 소스 코드를 호 스팅해주는(보여주는) 웹사이트입 니다. 다양한 프로젝트 소스 코드 들을 확인할 수 있습니다 • git clone 명령어로 Github의 코 드를 가져올 수 있습니다.
  • 8. Kafka 소개 Kafka란 무엇이고, 어떤 특징을 지 니고 있는지 설명합니다 8
  • 9. Kafka 란? 9 •Kafka는 발행-구독(pub-sub) 모델의 메시징 시스템입니다 •발행-구독 모델이란, 여러 원천 애플리케이션/프로세스에서 생성되는 데이터(메시지/로그)들이 데이터를 소비할 애플리케이션/프로세스로 직접 연결되어 전달되는 대신, 해당 데이터를 분류에 맞게 발행(publish) 하고 그 분류 주제를 구독(subscribe)하고 있는 곳에서 받아가 사용하는 모델입니다 •애플리케이션이 복잡해질수록 더 많은 데이터가 오고 가야 하고, 이를 클러스터로 운영해 체계적이고 안전 하게 스트리밍할 수 있는 플랫폼으로 나온 것이 Kafka입니다
  • 10. Kafka의 구조 10 참고 자료: https://medium.com/@umanking/카프카에-대해서-이야기-하기전에-먼저-data에-대해서-이야기해보자-d2e3ca2f3c2 - Broker: 클라이언트로부터의 요청을 처리하고, 데이터를 복제합니다 - ZooKeeper: Broker와 topic들, 사용자들 클러스터의 상태를 유지합니다 - Topics: 들어오는 메시지들을 분류합니다 - Producers: 메시지를 broker에 보냅니다 - Consumers: 메시지를 broker로부터 구독하고 소비합니다
  • 11. •초당 1000개 이상의 메시지를 전송할 수 있는 처리량을 제 공합니다 •메시지를 처리하는 데 발생하는 지연 시간이 적습니다 •확장 하기 쉽습니다 (분산 클러스터에 특화되어 있습니다) •메시지가 손실되지 않도록 관리해줍니다 •생산자-사용자 사이의 메시지 전달, 웹사이트 동작 확인, 데 이터 수집 및 모니터링, 스트리밍 데이터 처리, 시간 순 상 태 변경 기록, 커밋 로그 등의 기능이 있습니다 •Netflix, Uber 등 많은 대규모 서비스에서 실제로 Kafka가 사용되고 있습니다 Kafka의 특징 11
  • 12. Kafka 실행 Kafka를 설치하고 실행해 콘솔창의 메시지를 전송합니다 12
  • 13. 필요한 패키지 설치 13 NUC의 터미널에서 설치해 주세요 Python3 라이브러리 설치 도구를 설치합니다 Kafka 실행을 위해 필요한 jdk를 설치합니다 Python에서 kafka를 실행할 수 있도록 해줍니다 Kafka를 설치합니다
  • 14. 필요한 패키지 설치 14 SSH로 Pi 터미널 에 접속해 동일하게 설치해 주세요 Kafka 실행을 위해 필요한 jdk를 설치합니다 Python에서 kafka를 실행할 수 있도록 해줍니다 Kafka를 설치합니다
  • 15. Kafka 실행 순서 15 •1. Zookeeper를 켭니다 (Kafka server) •2. Server(broker)를 켜고 + Kafka topic을 만듭니다 (Kafka server) •topic은 이벤트들의 분류입니다. 같은 종류=topic의 이벤트들을 함께 묶어서 관리하기 때문 에, 이벤트/메시지를 생성하기 전에 topic을 먼저 만들어야 합니다 •topic은 다시 partition이라는 일정 크기의 조각으로 나뉘어 여러 broker에 복제되어 저장됩 니다 •3. Producer와 Consumer를 켭니다 (Kafka의 Client). Producer는 이벤트를 생성하고, Consumer는 이벤트를 받아오는 역할을 합니다
  • 16. Kafka ZooKeeper 실행 16 NUC의 터미널에서 실행해 주세요 •Kafka의 ZooKeeper를 실행해 분산된 메시지 큐의 정보를 관리해줍니다. •Kafka를 사용하려면 반드시 ZooKeeper를 실 행해야 합니다
  • 17. 17 Kafka Server 실행 NUC의 터미널에서 실행해 주세요 •Kafka의 Server(broker)를 실행해 클라이언트 (producer, consumer)로부터의 발행, 구독, 정보 요청 을 처리하고, 데이터를 topic, partition으로 나누어 복 제하고 저장합니다 •server.properties에서는 broker의 주소를 수정해 NUC 외부 기기인 Pi에서도 접근이 가능하도록 합니다. NUC IP 터미널에서 새로운 탭을 열어주세요
  • 18. 18 Kafka server.properties 수정 이유 (참고) •Kafka는 Server(broker)를 실행해 클라이언트 (producer, consumer)로부터의 발행, 구독, 정보 요 청을 처리하고, 데이터를 topic, partition으로 나누 어 복제하고 저장합니다. Bootstrap server는 각 topic에 맞는 broker들의 주소 목록을 갖고 있고, 클 라이언트와 broker를 연결해줍니다 •기본 설정을 사용하면 외부에서 bootstrap-server에 broker의 위치를 물어볼 때, localhost:9092 라는 응 답을 받습니다. Pi에서 NUC의 bootstrap-server (NUC IP:9092로 입력했음)로 broker의 위치를 물어 보고, 응답받은 주소로 메시지를 전송합니다. localhost라는 응답을 받으면 Pi의 localhost로 메시 징을 하게 되고, Pi localhost에는 Kafka broker가 없 기 때문에 오류가 납니다 •server.properties의 broker IP를 수정해 NUC 외부 기기인 Pi에서도 접근이 가능해집니다 수정하지 않으면 오류가 나는 이유
  • 19. 19 NUC의 터미널에서 실행해 주세요 •--create로 새로운 topic을 생성함을 밝힙니다 •--topic으로 이름을 지정합니다 •--replication-factor는 메시지의 복제 갯수를, partitions는 메시지를 몇 개의 broker로 쪼개어 저장 할 것인지를 지정합니다 •--list 옵션으로 만들어진 topic들의 목록을 확인할 수 있습니다 Kafka Topic 생성 •Kafka는 메시지를 topic에 따라 관리합니다. 메시지 를 발행하는 producer도 특정 topic에 대해 메시지 를 발행하고, consumer도 특정 topic을 지정해 그 topic에 대한 메시지들을 구독합니다. •Topic은 partition으로 나뉘어 broker들에 분산, 복 제되어 저장됩니다 터미널에서 새로운 탭을 열어주세요 NUC IP NUC IP
  • 20. 20 Pi 콘솔창 입력 메시지 발행, NUC 구독 •"chat" 이라는 topic으로 Pi가 메시지를 발행합니다. kafka-console-producer.sh 라는 쉘 스크립트를 실행해 Pi의 콘솔(터미널)에 입력한 메시지가 Kafka에 발행되도 록 합니다 •NUC에서 "chat"이라는 topic을 구독하도록 해 Pi가 발행 하는 메시지를 받을 수 있습니다 NUC의 터미널에서 실행해 주세요 NUC IP SSH로 Pi 터미널 에 접속해 실행해 주 세요 NUC IP
  • 21. Python Kafka 사용 Python의 Kafka 라이브러리를 활용해 Pi의 콘솔창 입력을 NUC으로 전송합니다 21
  • 22. Python이란? •Python은 간결한 코드와 쉬운 문법으로 사람이 읽기 좋게 쓰인 프로그래밍 언어입니다 •인터프리터 언어로 코드를 한 줄씩 실행하고 •다른 언어와 쉽게 통합할 수 있으며 •많은 라이브러리를 갖고 있다는 특징이 있습니다. •라이브러리는 코드를 작성할 필요 없이 동작을 수행할 수 있게 해주는 변수, 함수, 메소드를 모 아둔 것입니다. 우리가 수행하고자 하는 동작을 처음부터 코드로 작성할 필요 없이, 사전에 정의 된 것을 가져다 쓸 수 있습니다. •pip, conda 등의 도구로 원하는 라이브러리를 설치할 수 있습니다 •import를 사용해 라이브러리를 불러와 사용할 수 있습니다 22
  • 23. 23 SSH로 Pi 터미널 에 접속해 실행해 주 세요 Pi, NUC에서 서버 주소 전역 환경변수 설정 bashrc 파일을 편집해 환경변수 SERVER_IP에 NUC의 IP 주소를 저장합니다 source를 통해 추가된 환경 변수를 적용합니다 NUC의 터미널에서 실행해 주세요 마지막 줄에 아래와 같이 추가합니다 NUC IP 마지막 줄에 아래와 같이 추가합니다 NUC IP * 환경변수란, 셸 세션과 작업 환경에 대한 정보를 저장하는 변수입니다. 메모리에 데이터를 저장할 수 있으므로 쉘에서 실행중인 모든 프로그램이나 스크립트가 이 변수에 접근할 수 있습니다. 모든 bash 세션을 시작할 때 설정되는 전역 변수와, 해당 세션 안에서만 정의된 지역 변수가 있습니다
  • 24. 24 Python Kafka Producer ~/ .bashrc 'G' 입력으로 맨 마지막줄로 이동, 아래와 같이 입력해 환경변수 등록 NUC IP SSH로 Pi 터미널에 접속해 실행하세요 kafka_transmission/console_producer.py 4⃣ ctrl + C 를 눌러 종료하기 전까지, 입력값을 받아 Kafka 메시지로 발행합니다 1⃣ 필요한 라이브러리를 불러옵니다. * kafka는 앞서 pip3로 설치한 kafka-python 3⃣ Kafka producer를 정의합니다 2⃣ 환경변수에 저장된 Broker 서버 IP 주소를 가져옵니다 2⃣ python 실행시 topic을 인자로 받습니다. ex) python3 console_consumer.py --topic 'my_topic'
  • 25. 25 Python Kafka Consumer NUC의 터미널에서 실행해 주세요 ~/.bashrc 의 SERVER_IP에 NUC의 IP 값을 적어 넣습니다 1⃣ 필요한 라이브러리를 불러옵니다.* kafka는 앞서 pip3로 설치한 kafka-python 2⃣ 환경변수에 저장된 Broker 서버 IP 주소를 가져옵니다 3⃣ Kafka consumer를 정의합니다 4⃣ Broker에서 메시지를 받아오고 출력합니다 2⃣ python 실행시 topic을 인자로 받습니다. ex) python3 console_consumer.py --topic 'my_topic' kafka_transmission/console_consumer.py NUC IP
  • 26. Pi -> NUC 카메라 영상 전송 Pi에서 NUC으로 카메라 영상을 전 송합니다.Kafka, kafka-python, opencv를 사용합니다. 26
  • 27. 27 Kafka setup NUC의 터미널에서 실행해 주세요 •Kafka Zookeeper가 켜져 있는지 확인합니다 •Kafka Broker(Server)가 켜져 있는지 확인합니다 •켜져 있지 않다면 Kafka ZooKeeper 실행, Kafka Server 실행 페이지를 보고 다시 실행합니다. •비디오 송수신을 위해 새로운 "pi-video" 라는 새로운 Kafka topic을 생성합니다 NUC IP NUC IP NUC IP
  • 28. 28 Python Kafka Producer SSH로 Pi 터미널에 접속해 실행하세요 kafka_transmission/video_producer.py 4⃣ ctrl + C 를 눌러 종료하기 전까지, 입력값을 받아 Kafka 메시지로 발행합니다 1⃣ 필요한 라이브러리를 불러옵니다. * kafka는 앞서 pip3로 설치한 kafka-python 3⃣ Kafka producer를 정의합니다 2⃣ 환경변수에 저장된 Broker 서버 IP 주소를 가져옵니다 2⃣ python 실행시 topic을 인자로 받습니다. ex) python3 console_consumer.py --topic 'my_topic' - Raspberry Pi는 비디오 프레임을 발행하는 producer 입니다 - AI_X_SUMMER_2021/kafka_transmission 디렉토 리로 가세요 (이미 그 위치라면 이동 필요 없음) - video_producer.py 파일을 실행하세요
  • 29. - NUC 은 video frame을 소비합니다 - AI_X_SUMMER_2021/kafka_transmission 디 렉토리로 가세요 (이미 그 위치라면 이동 필요 없 음) - video_consumer.py 파일을 실행하세요 29 Python Kafka Consumer NUC의 터미널에서 실행해 주세요 kafka_transmission/video_consumer.py 1⃣ 필요한 라이브러리를 불러옵니다.* kafka는 앞서 pip3로 설치한 kafka-python 2⃣ 환경변수에 저장된 Broker 서버 IP 주소를 가져옵니다 3⃣ Kafka consumer를 정의합니다 4⃣ Broker에서 메시지를 받아오고 출력합니다 2⃣ python 실행시 topic을 인자로 받습니다. ex) python3 console_consumer.py --topic 'my_topic'