[Kafka] 다운로드 및 Quick Start

 

이 글에서는 Kafka를 다운로드하고 실행하는 방법에 대해 알아보겠습니다.

윈도우를 기준으로 명령어를 작성하였지만, 리눅스 환경과 실행 파일만 다를 뿐 명령어는 동일합니다.

 

 

 

1. Kafka 다운로드

1) Windows

Kafka 공홈에서 Kafka를 다운로드 받습니다.

( 현재 최신 버전은 2019년 12월에 Release된 2.4 입니다. )

 

 

  • Binary 압축 파일을 다운받습니다.
    • 스칼라 버전별로 binary 파일을 제공해주는데, 어떤 버전이라도 돌아가게 하려면 Scala 2.12를 추천한다고 하네요.
  • Kafka는 스칼라로 개발 되었으므로, 시스템에 JVM이 설치되어 있어야 합니다. ( jdk8 이상 )

 

 

2) linux

 

 

 

1. wget 패키지 설치

# yum -y install wget

 

2. Kafka 다운로드

# wget http://mirror.apache-kr.org/kafka/2.4.1/kafka-2.4.1-src.tgz

 

3. 압축 해제

# tar -xzf kafka-2.4.1-src.tgz

 

4-1. Java 설치 확인

# java -version

 

4-2. Java 설치가 안되어 있으면 설치

# yum -y install java-11-openjdk java-11-openjdk-devel

( 추가적으로 /etc/profile에서 환경변수까지 잡아주도록 합니다. )

 

이제 Kafka를 구동시킬 준비가 되었습니다.

 

 

 

 

2. Zookeeper 실행

Apache Zookeeper는 Kafka 클러스터의 최신 설정정보 관리, Kafka 서버들의 동기화, 리더 채택 등 클러스터의 서버들이 공유하는 데이터들을 관리하기 위해 사용됩니다.

따라서 Kafka server를 실행하기 전에, Zookeeper를 먼저 실행해줘야 합니다.

 

 

# cd {압축 풀었던 kafka 폴더}

# .\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

[2020-03-12 20:51:36,024] INFO Reading configuration from: .\config\zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)

[2020-03-12 20:51:36,032] WARN \tmp\zookeeper is relative. Prepend .\ to indicate that you're sure! (org.apache.zookeeper.server.quorum.QuorumPeerConfig) [2020-03-12 20:51:36,034] INFO clientPortAddress is 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.quorum.QuorumPeerConfig) ... [2020-03-12 20:51:36,233] INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory) [2020-03-12 20:51:36,252] INFO zookeeper.snapshotSizeFactor = 0.33 (org.apache.zookeeper.server.ZKDatabase) [2020-03-12 20:51:36,266] INFO Reading snapshot \tmp\zookeeper\version-2\snapshot.1e (org.apache.zookeeper.server.persistence.FileSnap) [2020-03-12 20:51:36,308] INFO Snapshotting: 0xa6 to \tmp\zookeeper\version-2\snapshot.a6 (org.apache.zookeeper.server.persistence.FileTxnSnapLog) [2020-03-12 20:51:36,335] INFO Using checkIntervalMs=60000 maxPerMinute=10000 (org.apache.zookeeper.server.ContainerManager)

  • 윈도우는 /bin/windows 폴더 밑에 batch 파일을 사용하고, 리눅스라면 /bin 디렉토리 하위에 shell 파일을 사용하면 됩니다.
  • zookeeper-server-start.bat
    • zookeeper 서버를 실행하는 파일입니다.
  • zookeeper.properties
    • zookeeper 서버 설정 파일입니다.
    • 위의 로그를 보시면 zookeeper를 실행했을 때 포트가 2181로 바인딩 되는데 그 이유는, zookeeper.properties에서 clientPort=2181으로 기본 설정되어 있기 때문입니다.
    • 기본 설정외에 추가적인 설정은 공식문서를 참고하시면 도움이 될듯합니다.

 

 

*** error ***

입력 줄이 너무 깁니다.

명령 구문이 올바르지 않습니다.

=> 위와 같은 에러가 발생한다면 폴더 경로가 길어서 그런 것이니, kafka 폴더를 C드라이브 바로 밑으로 옮긴후에 실행하시면 됩니다.

 

 

 

 

3. Kafka 실행

Zookeeper 서버가 실행된 상태에서 CMD창을 하나 더 열어 Kafka 서버를 실행합니다.

 

# .\bin\windows\kafka-server-start.bat .\config\server.properties

[2020-03-12 21:25:53,568] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$) [2020-03-12 21:25:53,857] INFO starting (kafka.server.KafkaServer) [2020-03-12 21:25:53,858] INFO Connecting to zookeeper on localhost:2181 (kafka.server.KafkaServer) [2020-03-12 21:25:53,874] INFO [ZooKeeperClient Kafka server] Initializing a new session to localhost:2181. (kafka.zookeeper.ZooKeeperClient) ... [2020-03-12 21:28:27,881] INFO [GroupMetadataManager brokerId=0] Scheduling loading of offsets and group metadata from __consumer_offsets-48 (kafka.coordinator.group.GroupMetadataManager) [2020-03-12 21:28:27,882] INFO [GroupMetadataManager brokerId=0] Finished loading offsets and group metadata from __consumer_offsets-42 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager) [2020-03-12 21:28:27,884] INFO [GroupMetadataManager brokerId=0] Finished loading offsets and group metadata from __consumer_offsets-45 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager) [2020-03-12 21:28:27,888] INFO [GroupMetadataManager brokerId=0] Finished loading offsets and group metadata from __consumer_offsets-48 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager)

  • kafka-server-start.bat는 kafka 서버 실행 파일이며, server.properties는 설정 파일입니다.
  • Kafka 서버를 튜닝하는 작업은 꽤 어려운 일이고, 저도 잘 모르니... 어떤 설정이 있는지에 대한 정보는 공식문서로 대체하겠습니다.

 

 

*** error ***

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

[2020-03-12 21:24:45,131] ERROR Shutdown broker because all log dirs in c:\tmp\kafka-logs have failed (kafka.log.LogManager)

=> 위와 같은 에러가 발생한다면, c:\tmp 폴더 하위에 있는 kafka-logs 폴더와 zookeeper 폴더를 제거하시길 바랍니다. 서버 실행시 재생성되므로 상관 없습니다. ( 참고 )

 

 

 


 

 

4. Quick Start

Zookeeper와 Kafka 서버를 실행했으니, Topic을 만들어서 메시지를 생산/소비하는 예제를 진행해보겠습니다.

아래의 예제는 공식문서 Quickstart를 참고하였습니다.

  • 윈도우 : .bat 파일
  • 리눅스 환경 : .sh 파일

 

1) Topic

⭐ Topic 관련 옵션 한번에 보기 (help 명령어)

# .\bin\windows\kafka-topics.bat --help

 

Topic 생성하기

CMD창을 하나 더 열어서 Topic을 만듭니다.

 

# .\bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

  • --create
    • 새로운 토픽을 만들 때 사용하는 옵션
  • --bootstrap-server
    • 연결할 Kafka 서버( host:port )
    • 이 옵션이 추가되면, 직접 Zookeeper에 연결하지 않아도 됩니다.
  • --replication-factor
    • Partition 복제 수
    • 이 옵션을 사용하지 않으면, 기본 값을 사용합니다.
      • 기본 값은 server.properties 파일에서 default.replication.factor 항목으로 설정 가능합니다. ( 설정되어 있지 않을 경우, 추가 작성 )
  • --partitions
    • Topic이 생성되거나 변경될 때의 Partition 수
    • 이 옵션을 사용하지 않으면, 기본 값을 사용합니다.
      • 기본 값은 server.properties 파일에서 num.partitions 항목으로 설정 가능합니다.
  • --topic
    • create, alter, describe, delete 옵션에 사용할 Topic 명
    • Topic 이름은 큰따옴표(")로 묶고, 정규식 사용이 가능하므로 \로 escape 합니다.

 

 

Topic 목록

 

# .\bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092

test

  • --list
    • 사용 가능한 Topic 목록

 

 

Topic 상세정보

 

# .\bin\windows\kafka-topics.bat --describe --topic test --bootstrap-server localhost:9092 Topic: test PartitionCount: 1 ReplicationFactor: 1 Configs: segment.bytes=1073741824 Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0

  • --describe
    • 운영상에 필요한 Topic의 상세정보를 보여줍니다.

 

 

Topic 삭제

# .\bin\windows\kafka-topics.bat --delete --topic test --bootstrap-server localhost:9092
  • --delete
    • Topic을 삭제하기 위해서는 server.properties 파일에서 delete.topic.enable=true 설정을 추가해줘야 합니다. ( 서버 재시작 필요 )

 

 

 

 

2) Producer

⭐ Producer 관련 옵션 한번에 보기 (help 명령어)

# .\bin\windows\kafka-console-producer.bat --help

 

Topic을 다시 생성한 상태에서 해당 Topic으로 메시지를 보냅니다. ( 메시지 생산 )

 

# .\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

>hello kafka >victolee

  • 두 개의 메시지를 입력합니다.
    • "hello kafka"
    • "victolee"

 

 

3) Consumer

⭐ Consumer관련 옵션 한번에 보기 (help 명령어)

# .\bin\windows\kafka-console-consumer.bat --help

 

test Topic에 "hello kafka", "victolee" 메시지를 생산했으니 CMD 창을 하나 더 열어서 이를 확인해봅니다. ( 메시지 소비 )

 

# .\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

 

  • --from-beginning
    • Consumer에게 설정된 offset이 없으므로 가장 최신의 메시지 대신 가장 먼저 도착한 메시지부터 읽도록 하는 옵션입니다.

 

 

Producer에서 메시지를 보내면 Consumer에서 바로 확인이 가능합니다.

 

 

 

 

이상으로 Kafka 설치 및 간단한 기본 명령어에 대해 알아보았습니다.

각 스크립트에서 제공하는 옵션들은 --help 옵션을 통해 확인하시면 도움이 됩니다.

 

[참고자료]

https://kafka.apache.org/quickstart

 

[출처] https://victorydntmd.tistory.com/345?category=798367

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86114
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78624
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95339
78 [Kafka] Kafka 한번 살펴보자... Quickstart file 졸리운_곰 2021.06.18 1308
77 Java Kafka Producer, Consumer 예제 구현 Java를 이용하여 Kafka Producer와 Kakfa Consumer를 구현해보자. file 졸리운_곰 2021.06.18 1168
76 Beginner’s Guide to Understand Kafka file 졸리운_곰 2021.06.18 1571
75 [Kafka] Kafka 설치/실행 및 테스트 file 졸리운_곰 2021.06.18 1065
74 [java] [kafka] [Kafka] 개념 및 기본예제 file 졸리운_곰 2021.06.16 2170
73 Getting started with Apache Kafka in Python file 졸리운_곰 2020.09.10 2255
» [Kafka] 다운로드 및 Quick Start file 졸리운_곰 2020.09.07 1890
71 [Kafka] 기본 개념잡기 file 졸리운_곰 2020.09.07 1704
70 Flume Integration with Kafka file 졸리운_곰 2019.04.16 2081
69 빅데이터: 플럼(Flume) 토폴로지 설계 file 졸리운_곰 2019.04.16 1600
68 실시간 처리를 위한 분산 메시징 시스템 카프카(Kafka) file 졸리운_곰 2018.05.12 1409
67 Flume과 Kafka를 사용한 초당 100만개 로그 수집 테스트 file 졸리운_곰 2018.05.12 1374
66 웹 크롤링 / web crwaling / web scraping / 웹 스크래핑 file 졸리운_곰 2017.07.09 1846
65 빅데이터 단지 몇퍼센트의 예측 정확성을 위하여 장애로 가득찬 빅데이터 시스템을 도입하여야 하는가에 대한 의문! file 졸리운_곰 2017.03.20 1603
64 빅데이터: 플럼(Flume) 토폴로지 설계 file 졸리운_곰 2017.03.20 1415
63 [실시간 분석 시스템] Apache Flume를 활용한 데이터 수집(1) file 졸리운_곰 2017.03.06 1316
62 [실시간 분석 시스템] 데이터 수집 #2 Apache Sqoop을 활용하여 RDBMS 데이터 수집(2) file 졸리운_곰 2017.03.06 1383
61 [실시간 분석 시스템] 데이터 수집 #2 Apache Sqoop을 활용하여 RDBMS 데이터 수집(1) file 졸리운_곰 2017.03.06 1101
60 [실시간 분석 시스템] 데이터 수집 #1 오픈 소스 수집기 비교 file 졸리운_곰 2017.03.06 1744
59 [실시간 분석 시스템] 일단 데이터 들여다 보기 file 졸리운_곰 2017.03.06 1934
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED