빅데이터 강의중 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 짜보기) (2) | 2019.11.09 |
---|---|
Kafka 따라해보기 - 0 (설명) (0) | 2019.11.09 |