반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- s3
- delta lake
- AWS
- kafka
- 스파크
- Schema Registry
- airflow
- Redshift
- 델타레이크
- spark streaming
- 레드시프트
- 컬럼 기반
- Zookeeper
- Data Engineer
- Data engineering
- MySQL
- 스파크 스트리밍
- 데이터
- 에어플로우
- 데이터 웨어하우스
- Data Warehouse
- spark
- 카프카
- docker
- 대용량 처리
- 데이터 엔지니어링
- kafka rest api
- 데이터 엔지니어
- Parquet
- 카프카 구축
Archives
- Today
- Total
데이터 엔지니어 기술 블로그
[🧙Kafka] 카프카 구축 (2) - 카프카 도커로 쉽게 설치하기 본문
반응형
About
이번에는 카프카를 도커로 설치하고 '카프카 설치 (1)' 에서 했던 주키퍼 앙상블을 연결하려고 한다.
하나의 컴퓨터에서 클러스터를 구성해보고, 배포할 때 크게 변경 없이 배포하기 위해 도커로 구성하려고 한다.
카프카 브로커는 5개로 구성하고 크기를 쉽게 변경 가능하도록 하려고 한다.
Tutorial & Example
1. 작업할 폴더를 생성한다.
2. Dockerfile을 아래와 같이 작성한다.
FROM ubuntu:18.04
RUN mkdir -p /root/install
RUN apt-get update
WORKDIR /root/install
ENV DEBIAN_FRONTEND noninteractive
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
RUN apt-get install openjdk-8-jdk -y
RUN apt-get install wget -y
RUN apt-get install vim -y
RUN wget https://downloads.apache.org/kafka/2.7.0/kafka_2.13-2.7.0.tgz
RUN tar -zxvf kafka_2.13-2.7.0.tgz
RUN mv kafka_2.13-2.7.0 /usr/local/kafka
RUN mkdir /data
COPY config/init.sh init.sh
RUN sed -i 's/\r//g' init.sh
COPY config/server.properties /usr/local/kafka/config/server.properties
RUN sed -i 's/\r//g' /usr/local/kafka/config/server.properties
CMD bash init.sh
3. config 폴더를 생성한다.
4. config 폴더에 init.sh 파일을 생성하고 아래의 코드를 입력한다.
sed -i "s/{{broker_id}}/$BROKER_ID/" /usr/local/kafka/config/server.properties
/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
5. config 폴더에 아래의 설정을 추가한다. broker.id 는 init.sh에서 추가해주기 때문에 생략했다.
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/data
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.bytes=5368709120
log.retention.check.interval.ms=300000
zookeeper.connect=pipeline-zookeeper-a:2181,pipeline-zookeeper-b:2181,pipeline-zookeeper-c:2181/default-kafka
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
auto.create.topics.enable=false
broker.id={{broker_id}}
6. docker-compose.yml 파일을 작성한다. 여기에서는 5개로 구성했다.
version: '3.8'
volumes:
pipeline-kafka-1-volume:
name: pipeline-kafka-1-volume
pipeline-kafka-2-volume:
name: pipeline-kafka-2-volume
pipeline-kafka-3-volume:
name: pipeline-kafka-3-volume
pipeline-kafka-4-volume:
name: pipeline-kafka-4-volume
pipeline-kafka-5-volume:
name: pipeline-kafka-5-volume
networks:
default:
external:
name: zoo
services:
pipeline-kafka-1:
container_name: pipeline-kafka-1
environment:
BROKER_ID: 1
hostname: pipeline-kafka-1
image: pipeline-kafka
restart: always
volumes:
- pipeline-kafka-1-volume:/data
pipeline-kafka-2:
container_name: pipeline-kafka-2
environment:
BROKER_ID: 2
hostname: pipeline-kafka-2
image: pipeline-kafka
restart: always
volumes:
- pipeline-kafka-2-volume:/data
pipeline-kafka-3:
container_name: pipeline-kafka-3
environment:
BROKER_ID: 3
hostname: pipeline-kafka-3
image: pipeline-kafka
restart: always
volumes:
- pipeline-kafka-3-volume:/data
pipeline-kafka-4:
container_name: pipeline-kafka-4
environment:
BROKER_ID: 4
hostname: pipeline-kafka-4
image: pipeline-kafka
restart: always
volumes:
- pipeline-kafka-4-volume:/data
pipeline-kafka-5:
container_name: pipeline-kafka-5
environment:
BROKER_ID: 5
hostname: pipeline-kafka-5
image: pipeline-kafka
restart: always
volumes:
- pipeline-kafka-5-volume:/data
7. Dockerfile을 작성했던 폴더로 가서 Docker를 빌드한다.
docker build --tag pipeline-kafka .
8. docker-compose.yml 을 작성했던 폴더로 가서 아래의 명령어로 실행한다.
docker-compose up -d
9. docker ps로 잘 실행이 되었는지 확인할 수 있다.
10. docker logs pipeline-kafka-1 결과
반응형
'데이터 엔지니어링' 카테고리의 다른 글
[🧙Kafka] 카프카 구축 (4) - 카프카 설정 구성하기 (1) | 2021.04.07 |
---|---|
[🧙Kafka] 카프카 구축 (3) - 카프카 클러스터 REST API로 사용하기 (0) | 2021.04.07 |
[🧙Kafka] 카프카 구축 (1) - 주키퍼 앙상블 쉽게 구축하기 (2) | 2021.04.06 |
[🔥Spark] Spark Streaming 이란? (0) | 2021.04.01 |
[데이터 엔지니어링 간단 정리] 스노우플레이크(Snowflake) - 클라우드 기반 데이터 웨어하우징 (0) | 2021.03.31 |
Comments