본문 바로가기

기타

[Kafka] 데이터 잘못 넣었을 때 오프셋 초기화하기 (offset reset)

728x90

안녕하세요 정말 오랜만에 투자일기가 아닌 개발글로 찾아뵙습니다.

 

오늘은 kafka에서 프로듀서가 잘못된 데이터를 집어넣었을때 컨슈머가 뽑아가지 못하는 상황에 대해서 다뤄보려고합니다. 

 

저는 데이터 수집모듈 수정과정에서 코딩을 좀 실수해서 python list구조가 조금 이상하게되는 상태가 되어 컨슈머에서 소비하지 못하는 상황이 생겼었는데요

 

이상황에서 사용할 수 있는 방법입니다.

 

 

 

 

원래대로라면 컨슈머그룹에서 잘 가져가야하는데 구조가 바뀌어버리니 Lag가 쌓이는 현상이 생겨버렸는데요

 

(고치기 전에 스샷을찍었어야했는데 이미 고쳐버려서 스샷이없네요)

 

이렇게 되면 해당 토픽을 지우거나 컨슈머그룹에서 오프셋의 위치를 바꿔줘야합니다.

 

 

 

우선 해당 컨슈머 그룹의 연결을 모두 꺼야합니다.

 

연결을 끊은상태에서 해당 명령어를 쳐야합니다. 

sh kafka-consumer-groups.sh --bootstrap-server [브로커주소:브로커포트] --group [컨슈머그룹이름] --reset-offsets --to-offset [새 오프셋] --execute --topic [토픽이름]

 

kafka-consumer-groups.sh 파일 위치는 카프카가 설치되어있는 /bin/ 폴더 안에 있습니다. 

 

이때 새 오프셋은 위에 스샷 기준으로 마지막 토픽을 수정하고싶을때 현재오프셋이 80518675고 LAG가 4니 현재 오프셋 + 4 를 더한 80518679로 입력해주면됩니다. 

 

그럼 깔끔하게 Lag가 다 날아가고 오프셋이 초기화됩니다. 이 후 다시 컨슈머그룹을 연결하시면됩니다 

 

반응형