Kafka 구덩이 밟기 - Couldn't find leaders for Set

SparkStreaming 프로그램이 Kafka에서 데이터를 읽는 프로그램을 실행하는 동안 다음과 같은 예외가 발생했습니다.
org.apache.spark.SparkException: ArrayBuffer(org.apache.spark.SparkException: Couldn't find leaders for Set

이 이상한 뜻은 스파크에서 파티션의 리더를 찾을 수 없다는 것이다.CCTV를 살펴보니 이상이 발생한 시점에 브로커 하나가 끊겼다.그런데 토픽의 리플리카 설정에 대한 2는 하나를 끊어도 리플리카 꼭대기에 있을 거예요.나중에 Partition이 존재하는 Replica가 리더와 동기화 업데이트를 유지하지 않았기 때문에 통상적으로 말하는 '따라잡지 못했다' 는 것을 발견했다.어떤 Topic에서 따라잡지 못한 상황이 있는지 확인하려면:
kafka-topics.sh --describe --zookeeper XXX --topic XXX

그 중의 Replicas와 Isr가 일치하는지 관찰하고 만약에 Isr가 Replicas보다 적으면 대응하는Partition이 따라잡지 못한 상황이 존재한다
해결 방법:num.replica. 증가fetchers의 값, 이 매개 변수는 Replicas가 Leader에서 데이터를 동기화하는 스레드 수입니다. 기본값은 1입니다. 이 매개 변수를 증가하면 동기화 IO가 증가합니다.테스트를 통해 이 값을 증가하면 더 이상 따라잡을 수 없는 상황이 없습니다
문제가 해결된 방법을 확인합니다. 문제가 발생한 SparkStreaming 프로그램을 시작하고 프로그램이 정상적으로 계산된 상태에서 Kill이 브로커를 임의로 떨어뜨린 후에 실행 상황을 관찰합니다.동기화 스레드 수를 늘리기 전에kill 이후SparkStreaming은 같은 이상을 보고하고, 커지면 프로그램이 정상적으로 실행되어 문제가 해결됩니다.

좋은 웹페이지 즐겨찾기