Kudu 테이블을 LIMIT 100 으로 조회해도 갑자기 오래 걸린다. 데이터 크기는 작고, 같은 Impala 로 Parquet 테이블을 조회하면 정상이다. COUNT(*) 와 COMPUTE STATS 는 타임아웃이 나고, 여러 Kudu 테이블에서 같은 증상이 나타난다.
SHOW TABLE STATS 실행 후 정상으로 돌아온 것처럼 보이는 것은 Impala catalog 의 통계 조회일 뿐 Kudu tablet server 에 영향을 주지 않는다. 우연일 가능성이 크다.
COUNT(*) 와 COMPUTE STATS 는 전체 행을 훑으므로 모든 tablet 을 건드린다. LIMIT 100 은 tablet 하나에서 조기 종료될 수 있다. 둘 다 느리면 특정 tablet 이 아니라 tablet server 전반의 문제다. 테이블 하나가 아니라 여러 테이블에서 나타나는 것도 같은 방향을 가리킨다.
kudu cluster ksck <masters> 는 Kudu 내부 RPC 로 모든 master 와 tserver 에 직접 물어 tablet 별 consensus · replica 상태를 검사한다. <masters> 에는 Kudu Master 역할이 배포된 호스트를 쉼표로 나열하며, CM → Kudu → Instances 에서 확인한다. Kerberos 환경이면 kinit 후 sudo -u kudu 로 실행한다.
sudo -u kudu kudu cluster ksck <m1>,<m2>,<m3> --sections MASTER_SUMMARIES,TSERVER_SUMMARIES,TABLE_SUMMARIES
sudo -u kudu kudu cluster ksck <m1>,<m2>,<m3> --tables <db>.<table> --ksck_format=plain_full
출력이 길면 Summary by table 의 Status 열, Tablet Server Summary 의 상태, unavailable · not RUNNING · WARNING 문자열만 본다.
두 도구가 보는 대상이 다르다.
| Cloudera Manager | ksck | |
|---|---|---|
| 검사 대상 | 프로세스 존재, 포트 listen, CPU · 메모리 · 디스크, Agent 통신 | master · tserver 에 직접 RPC, tablet consensus, replica 건강도 |
| 놓치는 것 | Kudu 내부 통신 · replica 상태 | 호스트 OS 지표 |
프로세스는 살아 있고 포트도 열려 있지만 master 로 heartbeat 가 가지 않는 상태가 가장 흔하다. 원인은 master ↔ tserver RPC 포트(7050 · 7051) 차단, 네트워크 · DNS, tserver hang, 그리고 Kerberos · TLS 인증 실패다. 실제로 Unauthorized access attempt to method kudu.master.MasterService.TSHeartbeat 가 master 로그에 반복되는 사례가 있었고, 이는 auth_to_local 규칙이 kudu/host@REALM 을 엉뚱한 이름으로 매핑한 경우였다.
# 각 tserver 호스트에서 master 로
nc -zv <master1> 7051
# master 에서 각 tserver 로
nc -zv <tserver1> 7050
# tserver 로그의 heartbeat 성공 여부
sudo tail -500 /var/log/kudu/kudu-tserver.INFO | grep -i heartbeat
CM 쪽에서도 상세 지표는 문제를 보여 준다. Kudu 서비스 → Charts 에서 "Live Tablet Servers" 와 "Under-replicated Tablets" 를 본다. 이 값들은 master 가 보고한 것이라 ksck 와 일치한다.
클러스터를 재시작한 직후에는 Unable to open scanner ... Timed out 이나 unknown TSK 류 오류가 몇 분간 날 수 있다. master 가 TSK(토큰 서명 키)를 tserver 에 전파하기 전에, 클라이언트가 재시작 전 받은 authz 토큰을 쓰기 때문이다. authz 토큰 유효기간이 기본 5 분이므로 5~10 분 기다리면 자연히 해소된다. 10 분이 지나도 계속되면 쿼리를 재시도하거나 Impala Daemon 만 롤링 재시작해 stale 토큰을 털어낸다.