• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

카프카에 잘못된 데이터를 보냈을 때 해결 방법이 궁금합니다

23.02.04 03:39 작성 23.02.04 03:39 수정 조회수 517

1

제가 처음에 json 파일을 아예 잘못된 형식으로 보내는 바람에 kafka sink connector가 fail 상태가 되었었습니다.

근데 문제는 이 상태에서 sink connector를 재실행을 해도 source connector랑 sink connector, topic까지 모두 새로 만들어도 계속해서 task에 잘못 요청한 데이터가 남아있어서 아무리 오랜 시간을 기다려도 계속해서 Exception이 발생한 상태가 되어 있습니다..

결국 한참을 구글링하면서 찾아보다가 토픽 내에 있는 메세지를 삭제하는 방법을 찾아서 해결했습니다 ㅜㅜ

 

여기서 제가 궁금한 점은

  1. source connector에 잘못된 정보를 보내는 바람에 sink connector가 먹통이 되어버리면 메세지나 토픽 자체를 수동으로 삭제해주는 것 외에는 방법이 없을까요? 구글을 찾아봐도 마땅한 방법을 찾지 못했습니다

  2. 이건 제가 카프카에 대해 아직 똑바로 이해하지 못해서 나온 질문인데, connector랑 topic까지 모두 따로 만들어도 하나의 sink에서 문제가 생기면 모든 커넥터가 정상적으로 동작하지 않는 게 원래 이런 게 맞는 건지 궁금합니다.

 

감사합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요, 이도원입니다.

질문하신 내용에 답변 및 의견 드립니다.

  1. source connector와 sink connector는 서로 같은 Topic을 대상으로 메시지를 보내고 받는 부분이기 때문에, 소스커넥터에서 보낸 메시지가 잘못 된 경우, 싱크커넥터가 잘못 된 데이터를 가져가게 되서 오류가 발생할 수는 있습니다. 문자가 되는 메시지를 찾아서 삭제하는 방식도 가능하며, 소스커넥터에서 메시지를 보고 있었던 만큼 토픽 자체를 삭제하는 것이 더 좋을 것 같습니다. 다만, 윈도우에서는 토픽 삭제시 카프카에 오류가 발생할 수 있어서, 리눅스나 MacOS를 사용하시거나, 윈도우에서 사용하실 경우에는 카프카와 주키퍼를 종료하신 다음 토픽이 저장되어 있는 tmp 폴더를 직접 삭제하시는게 좋을 것 같습니다.

  2. 토픽에 문제 또는 토픽에 저장된 메시지에 문제가 생겼을 때는 당연히 싱크커넥터가 정상작동 하지 않습니다. 1번에서도 말씀드린것처럼 소스커텍터와 싱크커넥터는 서로 별개의 서비스라고 생각하시면 되고, 다만 같은 토픽을 대상으로 서비스 될 수 있기 때문에, 영향을 받을 수도 있습니다. 싱크커텍터의 문제라기 보다는 싱크커텍터에서 가져가고 있는 메시지의 문제이기 때문에, 해당 토픽의 메시지를 사용하고 있던 다른 커넥터들에서도 문제가 생길 가능성을 있다고 생각됩니다.

감사합니다.

으뀨뜌님의 프로필

으뀨뜌

질문자

2023.02.04

감사합니다!!