다음을 통해 공유


레거시 Hive 메타스토어의 데이터베이스 개체

Azure Databricks 설명서는 Unity 카탈로그를 사용하여 데이터 개체 작업에 중점을 두지만 대부분의 지침은 레거시 Hive 메타스토어에 등록된 개체 작업에도 적용됩니다.

이 문서에서는 레거시 Hive 메타스토어에 등록된 데이터베이스 개체를 사용하여 작업하는 방법에 중점을 둡니다. 특히 이 문서에서는 Hive 메타스토어 개체 작업과 Unity 카탈로그 개체 작업과 다른 위치를 설명합니다. 또한 예기치 않은 다른 동작에 대해서도 설명합니다.

Databricks는 레거시 Hive 메타스토어에서 Unity 카탈로그로 모든 데이터를 마이그레이션하는 것이 좋습니다. Hive 테이블 및 뷰를 Unity 카탈로그로 업그레이드를 참조 하세요.

Hive 메타스토어 데이터 거버넌스는 어떻게 작동하나요?

Azure Databricks 작업 영역에는 기본 제공 Hive 메타스토어가 계속 포함되지만 Hive 메타스토어를 사용하는 데이터 거버넌스는 더 이상 사용되지 않습니다. Databricks는 모든 데이터 거버넌스에 Unity 카탈로그를 사용하는 것이 좋습니다. Unity 카탈로그 및 레거시 Hive 메타스토어 작업을 참조하세요.

Unity 카탈로그에 작업 영역을 사용하도록 설정해도 Hive 메타스토어에 이미 등록된 데이터로 작업하는 기능이 줄어들지 않습니다. 레거시 Hive 메타스토어에 등록된 모든 데이터 개체는 카탈로그의 Unity 카탈로그 인터페이스에 hive_metastore 표시됩니다. 하이브리드 Hive 메타스토어 및 Unity 카탈로그 작업 영역은 오랜 Hive 메타스토어 작업 영역을 전환하는 데 유용한 모델이 될 수 있습니다. 그러나 Unity 카탈로그의 데이터 거버넌스 및 성능 이점은 높으며 가능한 한 빨리 작업 영역을 완전히 전환해야 합니다.

Hive 메타스토어는 테이블 ACL(테이블 액세스 제어)을 사용하여 데이터베이스 개체에 대한 액세스를 관리합니다. 공유 액세스 모드에서 컴퓨팅을 사용하는 경우 테이블 액세스 제어에 대한 일부 지원이 유지됩니다. Hive 메타스토어 테이블 액세스 제어(레거시)를 참조하세요.

자격 증명 통과는 Hive 메타스토어 데이터베이스 개체의 데이터 거버넌스에 사용되지 않는 패턴입니다. 이 문서에서는 자격 증명 통과를 다루지 않습니다. 자격 증명 통과(레거시)를 참조하세요.

참고 항목

이 문서에서는 Hive 메타스토어의 데이터 액세스 제어를 참조하며 레거시 테이블 액세스 제어를 참조합니다.

카탈로그란 hive_metastore ?

Unity 카탈로그에 사용하도록 설정된 작업 영역에서 Hive 메타스토어의 모든 스키마는 Unity 카탈로그 3개 수준 네임스페이스에서 카탈로그의 hive_metastore 자식으로 표시됩니다. Hive 메타스토어는 실제로 카탈로그를 사용하지 않으며, 이 구문은 Unity 카탈로그 사용자를 위한 레거시 Hive 메타스토어의 테이블에 진입점을 제공합니다. 다음 구문을 사용하여 레거시 Hive 메타스토어의 테이블을 쿼리합니다.

SELECT * FROM hive_metastore.schema_name.table_name

참고 항목

필요에 따라 Unity 카탈로그 사용 작업 영역에서 카탈로그를 작업 영역 기본값으로 설정할 hive_metastore 수 있습니다. 기본 카탈로그 관리를 참조하세요.

Hive 메타스토어의 스키마

레거시 Hive 메타스토어에서 스키마는 데이터 개체 계층 구조에서 가장 높은 수준입니다.

Unity 카탈로그와 Hive 메타스토어 간에는 다음과 같은 몇 가지 중요한 차이점이 있습니다.

  • 카탈로그 탐색기를 사용하여 Hive 메타스토어에서 스키마를 만들 수 없습니다. 스키마에 대한 사용 권한을 보고 편집할 수 있습니다.
  • Hive 메타스토어에서 만든 스키마는 이름에 영숫자 ASCII 문자와 밑줄만 사용할 수 있습니다.
  • Hive 메타스토어를 사용하면 만드는 동안 스키마를 선언 LOCATION 할 수 있습니다. 이 기능은 Unity 카탈로그 관리 스토리지 위치와 유사하게 작동하며 다음과 같은 동작 차이점이 있습니다.
    • 위치를 제공하지 않으면 기본 위치 /user/hive/warehouse/<schema-name> 가 사용됩니다. 이 위치는 프로덕션 데이터를 저장하는 데 권장되지 않는 DBFS 루트에 있습니다.
    • 제공된 경로는 클라우드 URI, DBFS 루트 및 DBFS 탑재를 포함하여 스키마를 만드는 사용자가 사용할 수 있는 모든 클라우드 스토리지 위치일 수 있습니다.
    • 위치에 대한 액세스는 Hive 메타스토어에서 관리되지 않습니다.
    • Hive 메타스토어에서 스키마를 삭제하면 테이블 형식(관리형 또는 외부)에 관계없이 해당 스키마 위치의 모든 파일이 재귀적으로 삭제됩니다.

실수로 인한 데이터 손실을 방지하기 위해 Databricks는 Hive 메타스토어 스키마 위치를 사용할 때 다음을 권장합니다.

  • 이미 데이터가 포함된 스키마 위치를 할당하지 마세요.
  • 스키마 위치에 외부 테이블을 만들지 마세요.
  • 여러 스키마 간에 위치를 공유하지 마세요.
  • 다른 스키마 위치와 겹치는 스키마 위치를 할당하지 마세요. 즉, 다른 스키마 위치의 자식인 경로를 사용하지 마세요.
  • 외부 테이블의 위치와 겹치는 스키마 위치를 할당하지 마세요.

Hive 메타스토어의 관리되는 테이블

Hive 메타스토어의 관리되는 테이블에는 Unity 카탈로그에서 관리되는 테이블의 성능 이점이 없습니다. Unity 카탈로그 관리 테이블과 마찬가지로 Hive 메타스토어 관리 테이블은 기본적으로 Delta Lake를 사용합니다. 그러나 Hive 메타스토어에서 Unity 카탈로그와 달리 Azure Databricks에서 지원하는 대부분의 다른 데이터 형식을 사용하여 관리되는 테이블을 만들 수도 있습니다.

Hive 메타스토어의 관리되는 테이블은 항상 포함하는 스키마의 스토리지 위치에 만들어집니다. 관리되는 테이블을 쿼리하는 데 사용하는 컴퓨팅은 스토리지 위치에 대한 액세스 권한이 있어야 합니다.

Hive 메타스토어는 Unity 카탈로그와 같은 방식으로 관리되는 테이블의 데이터 레이아웃을 관리하지 않습니다. Hive 메타스토어에서 관리되는 테이블을 삭제하면 모든 기본 데이터 파일이 즉시 삭제됩니다. 반면 Unity 카탈로그에서는 7일 동안 관리되는 테이블을 사용할 수 UNDROP 있으며 데이터는 30일 이내에 영구적으로 삭제됩니다.

경로 기반 액세스를 사용하여 Hive 메타스토어 관리 테이블의 데이터를 읽거나 쓸 수 있지만 Unity 카탈로그에서는 데이터를 읽을 수 없으며 작성할 필요가 없습니다.

Hive 메타스토어의 외부 테이블

Unity 카탈로그가 도입되기 전에 Azure Databricks에서 만든 대부분의 테이블은 Hive 메타스토어에서 외부 테이블로 구성되었습니다. 외부 테이블을 선호하는 레거시 권장 사항은 일반적으로 몇 가지 주요 측면에 초점을 맞췄습니다.

  • 클라우드 개체 스토리지의 기존 데이터 위에 외부 테이블을 등록할 수 있습니다.
  • 외부 시스템에서 읽기 또는 쓰기를 위해 외부 테이블의 데이터 파일에 직접 액세스할 수 있습니다.
  • 테이블이 실수로 삭제된 경우 데이터 파일이 삭제되지 않았습니다.
  • 외부 테이블에는 필요 LOCATION하므로 프로덕션 데이터가 실수로 DBFS 루트로 끝날 가능성이 적습니다.

이제 Azure Databricks는 대부분의 테이블 형식 데이터 스토리지에 Unity 카탈로그 관리 테이블을 권장합니다. 관리되는 테이블 작업을 참조하세요.

Hive 메타스토어의 보기

Azure Databricks에서 지원하는 모든 데이터 원본에서 지원하는 Hive 메타스토어에서 보기를 선언할 수 있습니다. Unity 카탈로그에서는 외산 테이블, 구체화된 뷰 및 델타 공유 테이블을 포함하여 Unity 카탈로그 테이블 및 뷰에 대해서만 뷰를 선언할 수 있습니다.

테이블 형식이 아닌 데이터 원본에 대한 뷰를 선언하는 기능 때문에 Hive 메타스토어의 뷰는 사용자 환경의 다른 액세스 구성과 함께 예기치 않거나 의도하지 않은 데이터 액세스 권한을 부여할 수 있습니다.

다음 예를 살펴보세요.

  • 테이블 my_table 은 DBFS 탑재 경로를 /mnt/my_table사용하여 정의됩니다.
    • DBFS 탑재 자격 증명은 작업 영역에 저장되므로 모든 사용자는 기본적으로 이 경로에 액세스할 수 있습니다.
  • 테이블 ACL은 사용자 그룹에 대한 액세스를 my_table 제한하는 데 사용됩니다.
    • 레거시 테이블 ACL은 공유 액세스 모드 또는 SQL 웨어하우스로 구성되는 컴퓨팅에만 적용됩니다.
  • my_view 는 동일한 데이터 파일을 'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'지원하는 클라우드 URI에 대해 직접 정의됩니다.
    • URI 자격 증명은 Spark 세션 또는 컴퓨팅 구성에 정의된 액세스 정책을 사용합니다.

보기 my_view 에는 다음과 같은 속성이 있습니다.

  • 클라우드 개체 스토리지 /mnt/my_table를 탑재하는 데 사용되는 DBFS 탑재 자격 증명을 사용하지 않습니다.
  • 컴퓨팅 구성에 my_table관계없이 설정된 테이블 ACL은 적용되지 않습니다.
  • 읽기 액세스를 제공하는 컴퓨팅에 대해 구성된 데이터 액세스 'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'정책이 필요합니다.

참고 항목

이는 발생할 수 있는 예기치 않은 동작의 한 예이며 레거시 Hive 메타스토어의 뷰에서 제시하는 모든 잠재적 문제를 포괄적으로 차단하지는 않습니다. Databricks는 모든 보기 정의에 Unity 카탈로그를 사용하는 것이 좋습니다.

레거시 Hive 테이블 및 HiveQL 지원

Azure Databricks에는 Hive 테이블 및 HiveQL 기능에 대한 몇 가지 레거시 지원이 포함되어 있습니다. 이 기능은 Azure Databricks의 초기 버전과 Apache Hadoop 도구 에코시스템의 잔재입니다. 이 기능은 최적화되지 않고 일부 컴퓨팅 구성에서 지원되지 않으므로 Databricks는 Hive 테이블 또는 다른 Hive 기능을 사용하지 않는 것이 좋습니다.

다음 문서에서는 레거시 Hive 기능에 대해 설명합니다.