Hue 는 Django 애플리케이션이라 자체 RDBMS(MySQL · MariaDB · PostgreSQL · Oracle)에 사용자·문서·세션 정보를 저장한다. 클러스터 데이터와는 무관하며, 여기가 커지거나 깨지면 화면이 느려지거나 오류가 난다.
| 테이블 | 내용 |
|---|---|
auth_user |
사용자 계정 |
desktop_document2 |
저장된 쿼리·워크플로·노트북 등 사용자 문서. 소유자 · 이름 · 타입 · 본문(JSON) |
desktop_document2_doc 등 |
문서 공유·디렉터리 관계 |
django_session |
로그인 세션. 세션 키와 만료 시각 |
beeswax_savedquery |
예전 방식으로 저장된 쿼리 |
beeswax_session |
쿼리 엔진(HiveServer2 · Impala)과 맺은 세션 핸들 |
beeswax_queryhistory |
쿼리 실행 이력 |
desktop_document2 는 파일 내용을 담지 않는다. 사용자가 Hue 화면에서 저장한 문서의 메타데이터와 본문 JSON 이며, HDFS 파일과는 별개다.
지우면 그 세션으로 로그인해 있던 사용자가 모두 로그아웃된다. 데이터가 사라지지는 않는다. 만료된 행만 지우는 것이 안전하다.
SELECT count(*) FROM django_session WHERE expire_date < NOW();
DELETE FROM django_session WHERE expire_date < NOW();
테이블이 수백만 행으로 불어나 있으면 로그인과 페이지 전환이 느려진다. Hue 가 제공하는 관리 명령으로 정리하는 편이 낫고, 배포판에 따라 명령 이름이 다르므로 설치된 버전에서 확인한다.
/opt/cloudera/parcels/CDH/lib/hue/build/env/bin/hue help
beeswax.models.Session.DoesNotExist: Session matching query does not exist.
Hue 가 들고 있던 쿼리 엔진 세션이 사라진 뒤 그 세션으로 뭔가를 하려 할 때 난다. 흔한 계기는 HiveServer2 · Impala 재시작, 세션 유휴 타임아웃, 그리고 beeswax_session 행을 직접 지운 경우다.
사용자 쪽 조치는 간단하다. 브라우저에서 편집기를 새로 고쳐 새 세션을 만들면 된다. 반복된다면 엔진 쪽 세션 타임아웃과 재시작 주기를 확인한다.
"누가 쿼리 결과를 내려받았는가" 를 Hue 메타데이터 DB 만으로 추적하기는 어렵다. 다운로드 행위가 별도 테이블에 남지 않기 때문이다. 확실한 경로는 두 가지다.
Hue 접근 로그(/var/log/hue/access.log)에서 다운로드 엔드포인트 요청을 사용자·시각과 함께 찾는 방법, 그리고 감사 로그를 Cloudera Navigator 나 후속 감사 도구로 수집해 두는 방법이다. 운영상 추적이 필요하다면 로그 보존 기간부터 정해 둔다.