관리 메뉴

솜씨좋은장씨

[Kafka] Mac에 카프카 설치하고 실행해보기! 본문

Programming/Kafka

[Kafka] Mac에 카프카 설치하고 실행해보기!

솜씨좋은장씨 2021. 9. 1. 14:45
728x90
반응형

👨🏻‍💻 설치파일 다운로드

 

Apache Download Mirrors

We suggest the following mirror site for your download: https://dlcdn.apache.org/kafka/2.8.0/kafka_2.13-2.8.0.tgz Other mirror sites are suggested below. It is essential that you verify the integrity of the downloaded file using the PGP signature (.asc fil

www.apache.org

먼저 위의 링크로 이동합니다.

해당 링크로 이동하면 보이는 페이지에서 위의 사진에서 주황색 블록 위치의 값을 복사합니다.

아래의 방법 중 원하는 방법으로 다운로드를 진행합니다.

만약 wget을 활용하고 싶다면

2021.05.04 - [유용한 정보/APPLE] - [MAC] 맥북 터미널에서 wget 설치하여 사용하는 방법! ( feat. HomeBrew)

위의 링크를 참고하여 wget을 먼저 설치하기 바랍니다.

 

📃 curl 명령어 활용하여 다운로드

$ curl -O [복사한 주소]
$ curl -O https://mirror.navercorp.com/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz

📃 wget 명령어 활용하여 다운로드

$ wget [복사한 주소]
$ wget https://mirror.navercorp.com/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz

👨🏻‍💻 파일 압축해제

$ ls
kafka_2.13-2.8.0.tgz

먼저 ls 명령어를 통해 파일이 제대로 다운로드 되었는지 확인해봅니다.

위처럼 tgz 파일이 잘 있다고 하면 해당 파일의 압축을 풀어줍니다.

$ tar xvf kafka_2.13-2.8.0.tgz

위의 명령어를 통해 압축을 풀게되면 .tgz를 제외한 이름으로 폴더(디렉토리)가 하나 생길겁니다.

$ ls
kafka_2.13-2.8.0.tgz	kafka_2.13-2.8.0

다시 ls 명령어를 통해 보면 .tgz를 제외한 이름으로 폴더(디렉토리)가 생성되어있는 것을 확인할 수 있습니다.

👨🏻‍💻 Zookeeper 실행

$ cd kafka_2.13-2.8.0

이제 생성된 kafka_2.13-2.8.0 폴더(디렉토리)로 이동합니다.

$ bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

그 다음 위의 명령어를 통해 백그라운드에서 zookeeper 가 실행 되도록합니다.

👨🏻‍💻 Kafka 실행

$ bin/kafka-server-start.sh -daemon config/server.properties

이번에는 Kafka를 실행합니다.

 

잘 실행되었는지 확인은 netstat 명령어를 통해 진행하면됩니다.

$ netstat -an | grep 2181
tcp46      0      0  *.2181                 *.*                    LISTEN

netstat 명령어를 통해 나온 결과가 위와 같이 나오면 잘 실행된 것입니다.

👨🏻‍💻 Kafka 토픽 생성 및 확인

$ bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
Created topic quickstart-events.

위의 명령어를 통하여 토픽을 생성합니다.

생성 옵션은 다음과 같습니다.

--create : 생성
--topic  : topic 명
--bootstrap-server : 연결한 카프카 서버 주소
--partitions : 생성하는 토픽의 파티션 수
--replication-factor : 생성하는 토픽의 각 파티션의 replication-factor 개수

만약 topic이 제대로 생성되지 않고

[2021-09-01 13:54:26,904] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2021-09-01 13:54:27,025] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2021-09-01 13:54:27,128] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2021-09-01 13:54:27,432] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

위와 같은 오류가 발생할 때에는 아래의 링크를 참고해주세요!

2021.09.01 - [Programming/Kafka] - [Kafka] could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient) 해결 방법

$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092

카프카 topic이 잘 생성되었는지 확인은 위의 명령어를 통해 확인합니다.

Topic: quickstart-events	TopicId: kppV-lRkRFuAl2Kk5DICHA	PartitionCount: 1	ReplicationFactor: 1	Configs: segment.bytes=1073741824
	Topic: quickstart-events	Partition: 0	Leader: 0	Replicas: 0	Isr: 0

위와 같이 정보가 나오면 제대로 생성이 된 것입니다.

👨🏻‍💻 Producer 실행

$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092

위의 명령어를 실행하면

>

위처럼 입력할 수 있도록 바뀝니다.

>SOMJANG FIRST MESSAGE
>SOMJANG SECOND MESSAGE
>SOMJANG THIRD MESSAGE

각 > 라인 한줄 한줄이 하나의 메세지가 됩니다.

👨🏻‍💻 Consumer 실행

이번엔 Consumer 입니다. Producer를 실행하고 있는 터미널이 아닌 새로운 터미널을 열어줍니다.

$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

새로운 터미널에서 위의 명령어를 입력하면

SOMJANG FIRST MESSAGE
SOMJANG SECOND MESSAGE
SOMJANG THIRD MESSAGE

아까 Producer에서 입력한 메세지가 주르륵 출력되는 것을 볼 수 있습니다.

 

이후에 계속 Producer에 메세지를 입력하면

입력한 순서대로 Consumer에서 보여지게 됩니다.

 

앞으로 Kafka와 Python을 활용해 개발을 진행해보려합니다.

 

읽어주셔서 감사합니다.

Comments