일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- hadoop
- LDAP
- NoSQL
- 빅데이터
- 람다 아키텍처
- slack app
- Windows
- execution_date
- Service
- Lambda architecture
- SlackWebhookOperator
- slack
- HDFS
- Scala
- jupyter
- HDP
- Namenode
- python
- ambari
- Example DAG
- java
- docker
- HIVE
- 정규표현식
- HBase
- re
- yarn
- Kafka
- MapReduce
- airflow
- Today
- Total
IT 삽질기
Docker을 이용한 Kafka 시작하기 본문
Kafka 시작하기
Docker을 이용해 Kafka를 시작해보자
docker hub에 있는 이미지를 사용했으며 사용한 이미지는 아래의 링크를 참고하기 바란다
hub.docker.com/r/wurstmeister/kafka
github.com/wurstmeister/kafka-docker
docker-compose를 사용하기 위해 github에서 다운받는다
git clone https://github.com/wurstmeister/kafka-docker.git
다운받은 후 compose 파일을 수정한다.
broker을 하나만 올려서 테스트할 것이기 때문에
docker-compose-single-broker.yml 파일을 수정했으며, 수정한 내용은 아래와 같다
ip에는 사용하고 있는 pc의 ip를 넣어주면 된다.
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: [ipaddress]
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
compose 파일의 내용은 잠깐 살펴보면,
kafka를 동작시키기 위해서는 zookeeper도 필요하기 때문에 zookeeper와 port에 대한 설정이 들어있다
이제 docker-compose 명령어를 이용해 kafka와 zookeeper을 실행시켜 보자
-f 옵션을 이용해 docker-compose-single-broker.yml 파일을 지정해주고 실행시킨다
docker-compose -f docker-compose-single-broker.yml up
docker-desktop을 사용하는 경우에는 아래와 같이 정상적으로 올라온 것을 확인할 수 있다
정상적으로 올라왔다면 docker container에 접근해 명령어를 사용해보자.
먼저 container을 확인한다
docker ps
2개의 container중 kafka 쪽에 접근할 것이며, 아래의 명령어로 /bin/bash shell에 접근할 수 있다
docker exec -it 376c /bin/bash
kafka 명령어를 사용하기 위해 kafka home로 설정되어 있는 /opt/kafka로 이동한다.
kafka 명령어들은 bin 디렉토리에 존재하며, 해당 디렉토리로 이동해 topic를 만들고 topic에 데이터를 넣어보자
topic 생성하기
topic를 생성하기 위해서는 kafka-topic.sh 파일을 사용하며, bootstrap-server는 필수 옵션으로 사용하는데 최신 kafka 버전에서는 kafka broker ip:port를 사용하면 된다.
partitions, replication-factor등의 옵션을 추가로 적용할 수 있지만 여기서는 다른 옵션은 주지 않고 테스트를 진행했으며, 명시하지 않을 경우 default 값으로 설정된다.
./kafka-topics.sh --bootstrap-server localhost:9092 --topic blog_test --create
topic 확인
topic이 잘 생성됐는지 확인해보자
확인을 위해서는 마찬가지로 kafka-topics.sh를 사용하며 --list 옵션을 사용한다
./kafka-topics.sh --bootstrap-server localhost:9092 --list
이렇게 topic가 정상적으로 생성된것을 확인하면 이제 만든 topic에 record를 보내고 정상적으로 들어갔는지 확인해보자.
topic에 record 넣기
record를 넣기 위해서는 kafka-console-producer.sh를 이용하며, 아래와 --topic 옵션으로 topic를 지정하면 원하는 record를 넣을 수 있다.
hello, world는 모두 입력한 것으로 kafka에 record가 들어가게 되었다.
./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic blog_test
topic record 확인
record를 확인하기 위해서는 kafka-console-consumer.sh를 사용한다.
--from-beginning 옵션을 사용하는데, 이는 kafka offset중 처음에 있는 record부터 가지고 온다는 것으로 offset등 kafka 용어에 대한 설명은 다음 포스트에서 설명하도록 한다.
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic blog_test --from-beginning
'BigData > Kafka' 카테고리의 다른 글
Kafka Acks (0) | 2021.06.08 |
---|---|
Kafka-manager을 이용한 Partition reassign (0) | 2021.06.05 |
Kafka scale out (0) | 2021.06.01 |
Kafka ISR(In-Sync-Replicas) (0) | 2021.05.29 |
Kafka 보관 주기 설정하기 (0) | 2021.05.28 |