- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
big data (빅데이터) [Kafka] 다운로드 및 Quick Start
2020.09.07 21:51
[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 ***
입력 줄이 너무 깁니다.
명령 구문이 올바르지 않습니다.
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 ***
[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 명령어)
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 삭제
- --delete
- Topic을 삭제하기 위해서는 server.properties 파일에서 delete.topic.enable=true 설정을 추가해줘야 합니다. ( 서버 재시작 필요 )
2) Producer
⭐ Producer 관련 옵션 한번에 보기 (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 명령어)
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
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86121 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 78628 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95342 |
| 13 |
[데이터 수집 및 전처리] 주식 전종목 어떻게 불러올까? 거래소 종목 불러오기
| 졸리운_곰 | 2023.12.09 | 1701 |
| 12 |
[데이터 수집 및 전처리] [Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기
| 졸리운_곰 | 2023.12.08 | 1509 |
| 11 |
[데이터 수집 및 전처리] 네이버 금융(차트)에서 주가 갈무리(크롤링)하기
| 졸리운_곰 | 2023.12.08 | 1495 |
| 10 |
[데이터 수집 및 전처리] 네이버 증권에서 일봉, 주봉 데이터 가져오기
| 졸리운_곰 | 2023.12.08 | 1499 |
| 9 |
[데이터 수집 및 전처리] (놀라운) 한글 데이터 짱! AwesomeKorean_Data
| 졸리운_곰 | 2023.03.07 | 1197 |
| 8 |
[데이터 수집 및 전처리] Crawling, Scraping
| 졸리운_곰 | 2022.05.21 | 1476 |
| 7 |
[데이터분석][데이터수집 전처리] MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기
| 졸리운_곰 | 2021.09.30 | 1415 |
| 6 | 카프카 설치 시 가장 중요한 설정 4가지 | 졸리운_곰 | 2021.07.13 | 1925 |
| 5 |
Prometheus Query(PromQL) 기본 이해하기
| 졸리운_곰 | 2020.12.17 | 1413 |
| 4 |
[인프라 모니터링 오픈소스] Prometheus 를 알아보자
| 졸리운_곰 | 2020.12.17 | 1906 |
| 3 |
Prometheus + Grafana 대시보드
| 졸리운_곰 | 2020.12.17 | 2488 |
| 2 |
Grafana란?
| 졸리운_곰 | 2020.12.17 | 2158 |
| 1 | Importing wikipedia dump to MySql | 졸리운_곰 | 2020.10.04 | 2494 |

