우분투(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으로 다시 실행시키면 된다.
'개발아닌개발 > kafka' 카테고리의 다른 글
kafka서버(Ubuntu)와 PC(windows) 메시지 주고받기 실습 (0) | 2021.11.09 |
---|
댓글