리니지(lineage) 정보 수집하기

리니지(lineage) 정보 수집하기 (Capture Lineage Info)

Hive에서 리니지 정보는 LineageInfo 객체 형태로 수집돼요. 이 객체는 SemanticAnalyzer에서 만들어져 HookContext 객체로 전달돼요. 데이터가 어디서 왔는지 추적하고 싶을 때 이 문서를 참고해요.

출처: 문서

본문

배경

Hive에서 리니지 정보는 LineageInfo 객체 형태로 수집됩니다. 이 객체는 SemanticAnalyzer에서 만들어지며 HookContext 객체로 전달됩니다. 사용자는 다음의 기존 후크(Hook)를 사용하거나 자신만의 커스텀 후크를 구현해 이 정보를 수집하고 활용할 수 있습니다.

기존 후크
  • org.apache.hadoop.hive.ql.hooks.PostExecutePrinter
  • org.apache.hadoop.hive.ql.hooks.LineageLogger
  • org.apache.atlas.hive.hook.HiveHook

커스텀 후크에서 리니지 정보를 수집하거나 기존 후크가 hive.exec.post.hooks에 설정되지 않은 경우를 위해, HIVE-24051에서 새 구성 hive.lineage.hook.info.enabled가 도입되었습니다. 이 구성의 기본값은 false 입니다.

리니지 정보에서 쿼리 유형에 대한 필터링 기능을 제공하기 위해 HIVE-28409에서 새 구성 hive.lineage.hook.info.query.type가 도입되었으며 기본값은 "ALL" 입니다. 사용자는 필요한 쿼리 유형에 대해서만 리니지 정보를 수집하도록 구성을 조정할 수 있습니다. HIVE-28409에서 이전에 도입된 hive.lineage.hook.info.enabled 구성은 deprecated(더 이상 사용하지 않음)로 표시되었습니다.

참고: HIVE-28409는 Hive 4.1.0 릴리스에서 제공될 예정입니다.

사용 예:

hive.lineage.hook.info.query.type=ALL                                -- 모든 쿼리에 대해 리니지 정보 수집
hive.lineage.hook.info.query.type=CREATE_VIEW,CREATE_TABLE_AS_SELECT -- 이 두 특정 쿼리 유형에 대해서만 리니지 정보 수집
hive.lineage.hook.info.query.type=NONE                               -- 어떤 쿼리에 대해서도 리니지 정보를 수집하지 않음

이전에 리니지 정보를 수집하려면 사용자에게 두 가지 방법이 있었습니다:

  1. 위에서 언급한 기존 후크 중 하나를 hive.exec.post.hooks 구성에 설정합니다.
  2. 클러스터에서 hive.lineage.hook.info.enabled를 true로 설정하고 HiveServer2 서비스를 재시작합니다. (Hive 4.0.0 릴리스부터 유효)

참고: hive.lineage.hook.info.enabled만 활성화하면 "Create View" 쿼리 유형에 대한 리니지 정보는 수집되지 않습니다. 사용자는 커스텀 후크 클래스 이름과 함께 hive.exec.post.hooks에 기존 후크를 설정해야 합니다.

HIVE-28768에서 변경된 사항

SemanticAnalyzerOptimizer 코드에서 리니지 정보를 수집하는 기존 후크들의 하드코딩된 값이 제거되었고, 리니지 정보를 수집할지 여부를 판단하기 위해 hive.lineage.hook.info.query.type 구성의 값을 확인합니다. hive.lineage.hook.info.query.type의 기본값은 "NONE" 으로 설정되었습니다.

HIVE-28768이 사용자에게 미치는 영향

  1. Hive 3.x에서 HIVE 4.1.0으로 바로 마이그레이션하는 사용자는 리니지 정보 수집 방식의 파괴적 변경(breaking changes)을 겪게 됩니다. hive.exec.post.hooks를 기존 후크 중 하나로 설정해도 더 이상 리니지 정보가 수집되지 않습니다. 리니지 정보를 수집하려면 hive.lineage.hook.info.query.type 구성을 사용해야 합니다.
  2. hive.lineage.hook.info.enabled를 true로 설정하지 않은 Hive 4.0.x에서 4.1.0으로 마이그레이션하는 사용자 역시 리니지 정보 수집 방식의 파괴적 변경을 겪게 됩니다.

참고: 리니지 정보를 수집하는 권장 방법은 hive.lineage.hook.info.query.type 구성입니다. hive.lineage.hook.info.enabled는 deprecated로 표시되었으며 향후 릴리스에서 제거될 예정이기 때문입니다.


더 알아보기 (Learn more)

Hive의 훅(Hook)을 직접 구현하는 방법과 Atlas 연동에 관심이 있다면 Hive 공식 문서의 Hook 관련 내용을 함께 살펴보세요. 리니지 정보는 데이터 거버넌스와 추적에서 중요한 역할을 해요.