이전 글에서는 EC2 인스턴스에 카프카 프로커, 주키퍼를 설치 후 로컬PC를 통해 통신을 확인하는 방법까지 알아봤습니다.
이번 글에서는 실제 카프가 운영환경에서 기본적이고 필수적인 명령어를 실행하여 토픽의 생성과 수정, 파티션 수정, 데이터를 전송하고 받는 방법들을 알아보겠습니다.
토픽은 카프카에서 빠질 수 없는 중요요소 이며, 카프카에서 데이터를 구분하는 가장 기본적인 개념 입니다. DB의 테이블의 개념과 유사할 수 있습니다.
카프카 클러스터에서 토픽은 여러개 존재할 수 있으며, 파티션도 존재합니다. 기본값으로 파티션은 1개부터 시작합니다. 파티션은 카프카에서 토픽을 구성하는데 필수요소이며, 파티션 구성으로 한 번에 처리할 수 있는 데이터양을 늘리거나 데이터의 종류를 나눠 처리할 수 있기 때문입니다.
kafaka-topics.sh 명령을 통해 토픽을 생성할 수 있다.
$ bin/kafka-topics.sh /
--create / --1: create 옵션으로 토픽 생성
--bootstrap-server my-kafka:9092 \ --2: 통신하게 되는 카프카 브로커의 ip, port를 적는다.
--topic hello.kafka --3: 토픽의 이름 작성
--partitions : 파티션의 개수 지정
--replication-factor : 토픽의 파티션을 복제할 복제 개수
(1:복제사용하지 않음, 2:1개의 복제본 사용, 최대 설정값은 통신하는 카프카 브로커의 개수)
--config : kafka-topics.sh 명령에 포함되지 않은 추가적인 설정
--retention.ms: 토픽의 데이터를 유지하는 기간
--list 옵션으로 생성된 토픽의 이름들 조회가 가능합니다.
--describe 옵션으로 파티션의 개수가 몇 개인지, 폭제된 파티션이 위치한 브로커의 번호, 토픽이 가진 파티션의 리더가 현재 어느 브로커에 존재하는지 등등 보다 상세한 정보 확인이 가능합니다.
토픽에 설정된 옵션을 변경하기 위해서는 2가지의 명령을 사용합니다.
kafka-topics.sh : 파티션의 개수 변경
kafka-configs.sh : 리텐션 기간 변경
--alter --partions : alter 명령어로 토픽의 파티션 개수를 변경합니다. db 테이블 수정 명령어와 비슷하죠
파티션 변경으로 0부터 시작되는 파티션 번호가 3번까지 생성 되었습니다.
retention.ms를 수정하기 위해 kafka-configs.sh와 --alter, --add-config 옵션을 사용했습니다.
--add-config 옵션을 사용하면 이미 존재하는 설정값은 변경하고 존재하지 않는 설정값은 신규로 추가하게 됩니다.