목록 보기
Hive는 잊으려 했지만, Spark는 기억하고 있었다: 사라진 get_table RPC 복원기
백엔드

Hive는 잊으려 했지만, Spark는 기억하고 있었다: 사라진 get_table RPC 복원기

네이버 D2
네이버 D2
2026년 9월 29일

두줄요약

Hive 4.2에서 제거된 get_table RPC로 Spark 잡이 실패한 원인을 추적했습니다.\nThrift IDL 계약을 보존한 RPC 복원과 생성 코드 검증 방식을 정리했습니다.

문제 상황

  • Hive Metastore 4.2 업그레이드 후 Spark 잡의 테이블 메타데이터 조회에서 UNKNOWN_METHOD: get_table 발생
  • Hive 4.2 클라이언트는 정상 동작하고, Hive 2.3.9 클라이언트를 내장한 Spark 3.5.5에서만 실패

원인 분석

  • Hive 4 계열에서 레거시 get_table RPC 제거와 요청 객체 기반 get_table_req 중심 API 전환
  • Spark 내장 구버전 HiveMetaStoreClient의 get_table(dbname, tbl_name) 호출과 서버 프로세서 맵의 미등록 상태
  • RPC 이름, 인자 필드 번호·타입, 반환 타입, 예외 정의를 포함하는 Thrift IDL 계약 불일치

해결 방법

  • HMS IDL에 기존 시그니처 그대로 get_table RPC를 하위 호환용으로 복원
  • 신규 조회 로직 대신 검증된 getTableInternal 위임 방식의 서버 구현
  • IDL 변경 후 Java·C++·Python Thrift 스텁 재생성과 클라이언트 송수신·직렬화·디스패치 코드 확인

선택 이유

  • Spark 클라이언트 버전 일괄 상향과 전체 잡 재검증의 큰 파급 범위 회피
  • 프록시 계층·별도 호환 클라이언트 대비 HMS 한 곳에 국한된 낮은 운영 복잡도
  • 사용자 측 변경 없이 구버전 Metastore 클라이언트 수용

네이버 계열사 채용5건

채용 사이트에서 전체 보기

다음 읽기

비슷한 주제의 백엔드 글

데이터카탈로그에서 DataHub를 이용하는 방법

DataHub를 그대로 노출하지 않고 OpenSearch와 DB를 직접 활용해 데이터카탈로그에 맞는 검색·리니지·BI 통합 기능을 구현했습니다. 또한 버전업과 수집 성능 문제를 개선해 운영 적합성을 높였습니다.

우아한 형제들
우아한 형제들
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...