리니지(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 -- 어떤 쿼리에 대해서도 리니지 정보를 수집하지 않음
이전에 리니지 정보를 수집하려면 사용자에게 두 가지 방법이 있었습니다:
- 위에서 언급한 기존 후크 중 하나를
hive.exec.post.hooks구성에 설정합니다. - 클러스터에서
hive.lineage.hook.info.enabled를 true로 설정하고 HiveServer2 서비스를 재시작합니다. (Hive 4.0.0 릴리스부터 유효)
참고: hive.lineage.hook.info.enabled만 활성화하면 "Create View" 쿼리 유형에 대한 리니지 정보는 수집되지 않습니다. 사용자는 커스텀 후크 클래스 이름과 함께 hive.exec.post.hooks에 기존 후크를 설정해야 합니다.
HIVE-28768에서 변경된 사항
SemanticAnalyzer와 Optimizer 코드에서 리니지 정보를 수집하는 기존 후크들의 하드코딩된 값이 제거되었고, 리니지 정보를 수집할지 여부를 판단하기 위해 hive.lineage.hook.info.query.type 구성의 값을 확인합니다. hive.lineage.hook.info.query.type의 기본값은 "NONE" 으로 설정되었습니다.
HIVE-28768이 사용자에게 미치는 영향
- Hive 3.x에서 HIVE 4.1.0으로 바로 마이그레이션하는 사용자는 리니지 정보 수집 방식의 파괴적 변경(breaking changes)을 겪게 됩니다.
hive.exec.post.hooks를 기존 후크 중 하나로 설정해도 더 이상 리니지 정보가 수집되지 않습니다. 리니지 정보를 수집하려면hive.lineage.hook.info.query.type구성을 사용해야 합니다. 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 관련 내용을 함께 살펴보세요. 리니지 정보는 데이터 거버넌스와 추적에서 중요한 역할을 해요.