2016-08-30 1 views
-1

저는 전체 10M 레코드가있는 50 개의 파티션으로 거대한 주제를 사용하고 있습니다. 따라서 파티션 당 200,000 개가 필요합니다. 라운드 로빈 방식의 간단한 파티셔를 사용하여 50 개 이상의 파티션에 10M을 할당했습니다.카프카에서 거대한 파티션을 사용합니다.

소비자 그룹을 실행할 때 데이터가 각 스레드와 일부 스레드에서 200K 미만인 것으로 나타났습니다. 소비하는 단일 메시지가 없습니다. 누락 된 것이 있습니까?

점수는 내가 1.3M에 ~ 800K 사이 어딘가 만

이 내 소비자 설정입니다

props.put("zookeeper.session.timeout.ms", "60000"); 
props.put("zookeeper.sync.time.ms", "2000"); 
props.put("auto.commit.interval.ms", "1000"); 
props.put("consumer.timeout.ms", "5000"); 
props.put("auto.offset.reset", "smallest"); 
props.put("session.timeout.ms", "5000"); 

답변

1

내 소비자 그룹을 실행하면, 나는 데이터 방식보다 200K에 참조 각 스레드 및 일부 스레드에서 나는 심지어 하나의 메시지를 섭취하지 않고 있습니다. 메시지가 누락 되었습니까?

나는 정확히 미만 200K 소비 무엇을 의미합니까 1.3M

에 어딘가에 ~ 800K 사이 얻을 전반적? 소비자 코드 실행 기간은 얼마였습니까? 클라이언트, 설정 (브로커 & 소비자) 및 설정 (예 : 메시지 크기)에 따라 소비자 측에서 CPU가 부족하여 대기 시간이 훨씬 길어질 수 있습니다. 당신이 실제로보고하는 숫자는 무엇을 의미합니까? 초당, 분 또는 다른 것입니까? 자세한 내용을 제공해야합니다. 이것이 전체 절대 숫자 인 경우 설정에 문제가있는 것입니다. 왜냐하면 당신이 단 하나의 소비자를 운영하더라도 그것은 모든 파티션에서 소비해야하므로 오래 걸릴 수 있습니다.

카프카의 작동 방식은 그룹 내의 소비자들에게 파티션을 할당하는 것입니다 (하나의 소비자는 여러 파티션에서 소비 할 수 있지만 한 파티션은 항상 한 소비자에게 할당됩니다).

+0

시간을내어 주셔서 감사합니다 Manav. Consumer Threads는 consumertimeoutexception을 초과 할 때까지 남았습니다. 숫자는 단지 레코드 수이며 취한 시간과 아무 관련이 없습니다. 이것은 절대적인 숫자입니다. 내 소비자 코드는 https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example과 매우 유사합니다. –

0

소비자 제한 시간을 늘리면 모든 메시지를 소비하는 데 도움이됩니다. Manav에게 감사드립니다. 실제로 소비자에게 약간의 대기 시간이 있었고 타임 아웃을 늘릴 때 효과적이었습니다.

관련 문제