반응형

빅데이터 강의중 kafka에 대한 실습 설명입니다

포스팅 기준 2.3.0 버젼이 최신이라 2.3.0 버젼으로 진행합니다

보통은 클러스터를 해야하지만 간단하게 Kafka가 무엇인지 따라해보고 실습하는게 목적이기 때문에 단일 서버에서 진행합니다

1 Kafka 다운로드

# java 설치
$ sudo apt-get install openjdk-8-jdk
# kafka 다운로드
$ wget http://mirror.navercorp.com/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz
#  wget: command not found << 에러 뜰시 $ sudo apt-get -y install wget으로 wget 설치
# kafka 압축풀기
$ tar -xvzf kafka_2.12-2.3.0.tgz
cd kafka_2.12-2.3.0

zookeeper 구축 및 실행

Kafka는 zookeeper가 분산 메세지 큐를 관리해주기 때문에 kafka를 실행하기전에 zookeeper가 반드시 실행되어야합니다
(끌때도 kafka부터 끄고 zookeeper 끄기)

zookeeper 설정

zookeeper 설정 보기

$ cd kafka_2.12-2.3.0
$ vi config/zookeeper.properties

이러한 항목이 설정되어 있습니다

dataDir=/tmp/zookeeper # zookeeper 기본 데이터 폴더
clientPort=2181  # zookeeper port
maxClientCnxns=0 # client 수 설정 0이면 unlimit

클러스터라면 각각 kafka server 주소와 port들을 지정해줘야하지만

저희는 단일서버라서 딱히 추가해 줄 부분이 없습니다

zookeeper 실행

zookeeper를 daemon으로 실행하기 전에 실습도중 실행시켜놓아야 하기때문에 ssh tab을 하나 더 켜서 실행하도록 합니다

$ cd kafka_2.12-2.3.0
$ ./bin/zookeeper-server-start.sh config/zookeeper.properties
# [-daemon] << daemon 옵션

 

 

Kafka 구축 및 실행

kafka 설정

kafka 설정 보기

$ cd kafka_2.12-2.3.0
$ vi config/server.properties

이러한 항목이 설정되어 있습니다

broker.id=0     # kafka broker id
log.dirs=/tmp/kafka-logs    # kafka broker log file 폴더
num.partitions=1    # kafka topic 만들 때 default partition 설정
log.retention.hours # kafka message 저장 기간
log.retention.bytes # partition의 크기 , 크기 초과되면 삭제됌
# log.retention.bytes x partition의 수는 topic의 최대크기. 이 값이 -1이면 크기는 unlimit

zookeeper.connect=localhost:2181 # 연동할 zookeeper host 및 port

물론 kafka 설정에서도 클러스터를 위해 broker.id를 각각 지정해줘야 한다거나 zookeeper.connect에 여러개의 host와 port를 지정해줘야하지만 단일서버라 넘어가도록 하겠습니다

kafka 실행

zookeeper와 마찬가지로 kafka도 daemon으로 실행하기 전에 실습도중 실행시켜놓아야 하기때문에 ssh tab을 하나 더 켜서 실행하도록 합니다

$ cd kafka_2.12-2.3.0
$ bin/kafka-server-start.sh config/server.properties
# [-daemon] << daemon 옵션

Topic 생성하기

kafka를 실행하였으니 이제 topic을 생성해봅시다
partition 5개로 이루어진 bigdata라는 topic을 생성하도록 하겠습니다

$ cd kafka_2.12-2.3.0
$ bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 5 --topic bigdata
# --replication-factor broker에 복사되는 갯수 (안정성 증가) 저희는 단일서버니까 1개
# --bootstrap-server kafka 주소
# --zookeeper zookeeper 주소

Topic 확인하기

생성한 Topic list를 확인합니다

$ cd kafka_2.12-2.3.0
$ ./bin/kafka-topics.sh --list --bootstrap-server localhost:9092

결과
bigdata

특정 topic의 상세정보 파악하기

$ cd kafka_2.12-2.3.0
$ ./bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic bigdata

결과
Topic:bigdata   PartitionCount:5        ReplicationFactor:1     Configs:segment.bytes=1073741824
        Topic: bigdata  Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: bigdata  Partition: 1    Leader: 0       Replicas: 0     Isr: 0
        Topic: bigdata  Partition: 2    Leader: 0       Replicas: 0     Isr: 0
        Topic: bigdata  Partition: 3    Leader: 0       Replicas: 0     Isr: 0
        Topic: bigdata  Partition: 4    Leader: 0       Replicas: 0     Isr: 0

 

 

Producer/Consumer Test

생성한 Topic을 가지고 kafka에서 제공해주는 producer와 consumer를 가지고 메세지 생산하고 소비하는것을 테스트합니다

Producer test - 메세지 생산하기

kafka에서 제공해주는 console producer를 사용하여 터미널 창에 키보드로 입력하면 메세지가 생산합니다

$ cd kafka_2.12-2.3.0
$ ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic bigdata


입력하기
hello bigdata
>hi
>test
>test2

Consumer Test - 메세지 소비하기

kafka에서 제공해주는 console consumer를 사용하여 topic의 메세지를 소비해봅니다

$ cd kafka_2.12-2.3.0
$ ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic bigdata --from-beginning
# --from-beginning 처음부터 소비하겠다는 옵션


출력 결과
helo bigdata
hi
test
test2

2편에는 간단한 python으로 kafka와 연동하여 메세지 producing 및 consumming을 할 수 있는 code를 짜보겠습니다

'Cloud > Kafka' 카테고리의 다른 글

Kafka 따라해보기 - 2 (Python3로 간단히 code 짜보기)  (0) 2019.11.09
Kafka 따라해보기 - 0 (설명)  (0) 2019.11.09
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기