본문 바로가기
개발아닌개발/kafka

우분투에 Kafka 0.8.2 버전 설치하고 동작 테스트하기

by 불청객 2021. 11. 9.
반응형

우분투(20.04.3 LTS)에서 Kakfa(0.8.2 version) 설치하기를 위한 글. windows 환경에서 putty로 하여금 설치를 진행한다.

 

 

1. 우분투상에서 카프카 다운로드

URL로 바로 우분투상에서 다운로드를 진행한다. .tgz 확장자

근데 이때 우분투에서 다운로드가 안된다?? 그럼 외부 접속을 허용할 수 있도록 환경설정을 바꿔줘야함.

우분투의 설정 변경이 필요한 것으로, conf파일에 DNS 8.8.8.8 (?) insert 해줄것 (상세 내용은 생략)

 

2. 다운받은 파일 압축해제

그래서 지금 현재 내 우분투엔 kafka_2.11-0.8.2.0.tgz 와 압축해제한 kafka_2.11-0.8.2.0 폴더가 있다.

 

3. JAVA openjdk 8 설치하기 apt-get으로 설치하면됨.

본 셋팅은 완료 -> 이후 카프카를 구동시킬때는, bin까지 진입하지 않고, bin 상위폴더에서 호출한다

 

4. 주피터 서버 실행. 설정파일과 함께

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

 

5. kafka 서버 실행. 설정파일과 함께

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

 

-구동 완료-

 

 

kafka는 동작하기 위해서는, kafka 서버를 실행하고 주피터를 실행하여 전달된메시지를 볼 수 있다.

 

 

6. 토픽 만들기

bin/kafka-topics.sh -create -zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic 토픽이름
더보기

-create : 토픽 생성 파라미터

--replication-factor : replica 갯수 지정(복제본의 수)

--partitions : partitions 갯수 지정(토픽을 몇개로 나눌 것인가)

--topic : 토픽이름

 

7. 토픽 확인하기

bin/kafka-topics.sh --list --zookeeper localhost:2181

6에서 생성한 토픽이 출력된다.

 

 

7-1. 토픽 삭제하기

bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic 토픽이름

 

8-1. 메시지 보내기

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic 토픽이름

프로듀서를 실행시켜서 test라는 토픽에 대해서 메시지를 작성함. 연달아서 작성되는데 끊는건 그냥 아무거나 누르다 보니 끊어짐.

이때 컨슈머(읽기)를 키면, 메시지가 즉시 표출됨.

 

 

8-2. 메시지 읽기

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic 토픽이름 --from-beginning

작성한 메시지 처음부터 끝까지 표출하기. --from-beginning 옵션주기

앞서 말했듯이 프로듀서와 컨슈머 켜두고, 프로듀서에서 메시지 작성하면 바로바로 올라온다.

 

 

 

내 실습기록 

연계서버(producer)와의 kafka(consumer) 통신 테스트

서버에서 kafka producer로 메시지를 발행하고, 내 pc에서 kafka consumer로 메시지 출력하기(실시간)

9-1. consumer의 address

- 내가 개발한 consumer의 주소값은 연계서버주소:2181 로 한다.

참고로, 2181은 주키퍼의 포트번호이다. 해당 내용은 포털사이트에 돌아다니는 카프카 예제 테스트랑은 조금 상이한 부분이 많지만,

내 개발환경 기준으로 작성하는 방법

9-2. 테스트 과정

9-2-1. putty로 하여금, 서버의 주키퍼 start -> 카프카 start -> 프로듀서 실행

bin/kafka-console-producer.sh --broker-list 서버주소:9092 --topic 토픽이름

9-2-2. 내PC에서 컨슈머 실행

9-2-3. 출력결과 확인

 

 

[특이사항]

컨슈머의 동작은 json객체 타입으로 변환되어야해서 String 타입의 메시지를 받아 JSONParser -> JSONObject 로 변경했다.

(string을 json타입으로 변경하기 위해선 이 같은 과정을 거쳐야할 것으로 판단됨.)

위 과정에서 try-catch문을 안쓰면 빨간 에러가 남.... 이거 때문에 프로듀서가 json타입으로 안주면 쓰레드 에러를 출력하고 맛탱이가 감.

json타입으로 메시지 던지면 컨슈머에서 정상적으로 출력함.

 

 

 

#. 포트번호

카프카 9092

주키퍼 2181

#. 주피터와 카프카 서버가 안켜질때

발생 오류 일부발췌 내용

ERROR Unexpected exception, exiting abnormally (org.apache.zookeeper.server.ZooKeeperServerMain)

.

java.net.BindException: Address already in use

Address already in use 로 이뤄보아, 주피터 또는 카프카의 서버가 이미 실행되고 있다는 오류인것으로 보여진다.

입력해야할 코드는 4.5.번의 실행코드와 동일하나, start 대신 stop 명령어를 입력한 뒤에, start으로 다시 실행시키면 된다.

728x90
반응형

댓글