Impala · Spark · NiFi 에서 Kudu 에 붙을 때 필요한 값은 마스터의 호스트:포트 목록이다. 기본 RPC 포트는 7051, 웹 UI 는 8051 이다 (tablet server 는 각각 7050 · 8050). 클러스터 문서가 없을 때 현장에서 찾아내는 방법을 정리한다.
Cloudera 로 배포한 클러스터라면 각 노드에 gflagfile 이 내려와 있다.
grep -h rpc_bind_addresses /etc/kudu/conf/kudu-master.gflagfile
# --rpc_bind_addresses=10.0.0.11:7051
클라이언트가 볼 목록은 마스터가 아니라 tablet server 쪽 설정에 전부 들어 있다. 마스터가 몇 대인지 한 번에 알 수 있어 이쪽이 더 쓸모 있다.
grep -h tserver_master_addrs /etc/kudu/conf/kudu-tserver.gflagfile
# --tserver_master_addrs=10.0.0.11:7051,10.0.0.12:7051,10.0.0.13:7051
Cloudera Manager 에서는 Kudu 서비스 → Instances 탭에서 Master 역할이 배치된 호스트를 보고, Configuration 에서 Master RPC Port 값을 확인한다.
마스터 노드에 들어갈 수 있다면 실행 인자에 그대로 들어 있다.
ps -ef | grep '[k]udu-master'
Cloudera 배포판은 프로세스 디렉터리가 /run/cloudera-scm-agent/process/ 아래로 잡히므로, 인자에 gflagfile 경로만 보이고 주소가 안 보일 수 있다. 그때는 그 경로의 파일을 연다.
주소를 하나라도 알면 나머지 구성원을 얻을 수 있다.
kudu master list 10.0.0.11:7051
uuid | rpc-addresses | role
------------------------+------------------+---------
a1b2... | 10.0.0.11:7051 | LEADER
c3d4... | 10.0.0.12:7051 | FOLLOWER
e5f6... | 10.0.0.13:7051 | FOLLOWER
클러스터 전체 상태까지 보려면 ksck 를 쓴다. 마스터 목록은 콤마로 이어 준다.
kudu cluster ksck 10.0.0.11:7051,10.0.0.12:7051,10.0.0.13:7051
Kerberos 를 쓰는 클러스터에서는 먼저 티켓을 받아야 한다. 티켓 없이 실행하면 주소가 맞아도 인증 실패로 끊긴다.
Kudu 테이블을 이미 Impala 에서 쓰고 있다면 테이블 속성에 마스터 목록이 박혀 있다.
DESCRIBE FORMATTED db.table;
-- kudu.master_addresses | 10.0.0.11:7051,10.0.0.12:7051,10.0.0.13:7051
Impala 데몬 전체의 기본값은 시작 플래그 -kudu_master_hosts 에 들어 있고, Impala 웹 UI 의 /varz 에서 확인할 수 있다.
마스터가 어느 주소에 붙었는지는 기동 로그에 남는다.
grep -i 'bound to' /var/log/kudu/kudu-master.INFO | head
클라이언트에는 마스터 전부를 적는다. 한 대만 적으면 그 노드가 내려갈 때 접속이 끊긴다. Kudu 클라이언트는 목록 중 응답하는 곳에서 리더를 찾아간다.
주소는 rpc_advertised_addresses 가 설정돼 있으면 그 값이 클라이언트에게 알려진다. 내부망 IP 로 바인드하고 외부에는 다른 주소를 알려야 하는 구성에서는 rpc_bind_addresses 만 보고 판단하면 어긋난다.