다음을 통해 공유


DBFS 및 Unity 카탈로그 모범 사례

Unity 카탈로그는 DBFS와 완전히 다르게 데이터 거버넌스에 접근하는 다양한 새로운 구성과 개념을 소개합니다. 이 문서에서는 Unity 카탈로그 외부 위치 및 DBFS 작업에 대한 몇 가지 모범 사례를 간략하게 설명합니다.

Databricks는 Unity 카탈로그 사용 Azure Databricks 작업 영역에서 대부분의 사용 사례에 DBFS 및 탑재된 클라우드 개체 스토리지를 사용하지 않도록 권장합니다. 이 문서에서는 탑재된 클라우드 개체 스토리지를 사용해야 하는 몇 가지 시나리오를 설명합니다. 참고로, Databricks는 Unity 카탈로그와 함께 DBFS 루트를 사용하는 것을 권장하지 않으며, 이는 거기에 저장된 파일이나 데이터를 Unity 카탈로그로 마이그레이션해야 하는 경우에 한합니다.

Unity 카탈로그 사용 작업 영역에서 DBFS는 어떻게 사용합니까?

hive_metastore 테이블에 대해 수행되는 작업은 DBFS에서 관리하는 데이터 및 스토리지 자격 증명을 포함할 수 있는 레거시 데이터 액세스 패턴을 사용합니다. 작업 영역 범위 내에서 관리되는 hive_metastore 테이블은 DBFS 루트에 저장됩니다.

DBFS는 단일 사용자 액세스 모드에서 어떻게 작동하나요?

단일 사용자 액세스 모드로 구성된 클러스터에는 DBFS 루트 및 탑재된 데이터의 모든 파일을 포함하여 DBFS에 대한 모든 액세스 권한이 있습니다.

DBFS는 공유 액세스 모드에서 어떻게 작동하나요?

공유 액세스 모드는 Unity 카탈로그 데이터 거버넌스와 Azure Databricks 레거시 테이블 ACL을 결합합니다. hive_metastore 데이터에 대한 액세스는 명시적으로 부여된 권한이 있는 사용자만 사용할 수 있습니다.

DBFS를 사용하여 직접 파일과 상호 작용하려면 ANY FILE 권한이 부여되어야 합니다. ANY FILE 사용자가 hive_metastore 레거시 테이블 ACL을 우회하고 DBFS에서 관리하는 모든 데이터에 액세스할 수 있으므로 Databricks는 이 권한을 부여할 때 주의해야 합니다.

Unity 카탈로그 외부 위치에서 DBFS를 사용하지 마세요.

Unity 카탈로그는 전체 클라우드 URI 경로를 사용하여 관리되는 개체 스토리지 디렉터리에 대한 권한을 식별하여 외부 위치의 데이터에 대한 액세스를 보호합니다. DBFS 탑재는 Unity 카탈로그를 완전히 우회하는 완전히 다른 데이터 액세스 모델을 사용합니다. Databricks는 DBFS 탑재와 UC 외부 볼륨 간에 클라우드 객체 스토리지 볼륨을 재사용하지 말 것을 권장하며, 이는 작업 영역 또는 계정 간에 데이터를 공유할 때도 포함됩니다.

Unity 카탈로그 관리 스토리지 보호

관리되는 테이블 및 볼륨에 대한 데이터 파일을 저장하기 위해 관리되는 스토리지 위치를 사용하는 Unity 카탈로그입니다.

Databricks는 관리되는 스토리지 위치에 대해 다음을 권장합니다.

  • 새 스토리지 계정 또는 버킷을 사용합니다.
  • Unity 카탈로그에 대한 사용자 지정 ID 정책을 정의합니다.
  • Unity 카탈로그에서 관리하는 Azure Databricks에 대한 모든 액세스를 제한합니다.
  • Unity 카탈로그에 대해 만든 ID 액세스 정책에 대한 모든 액세스를 제한합니다.

외부 위치에 기존 데이터 추가

외부 위치를 사용하여 기존 스토리지 계정을 Unity 카탈로그에 로드할 수 있습니다. 보안을 강화하려면 Databricks는 다른 모든 스토리지 자격 증명 및 액세스 패턴을 해지한 후에만 스토리지 계정을 외부 위치에 로드하는 것이 좋습니다.

Unity 카탈로그에서 DBFS 루트로 사용되는 스토리지 계정을 외부 위치로 로드해서는 안 됩니다.

클러스터 구성은 Unity 카탈로그 파일 시스템 액세스에서 무시됩니다.

Unity 카탈로그는 파일 시스템 설정에 대한 클러스터 구성을 존중하지 않습니다. 즉, Unity 카탈로그를 사용하여 데이터에 액세스할 때 클라우드 개체 스토리지를 사용하여 사용자 지정 동작을 구성하기 위한 Hadoop 파일 시스템 설정이 작동하지 않습니다.

여러 경로 액세스에 대한 제한 사항

일반적으로 Unity 카탈로그와 DBFS를 함께 사용할 수 있지만 부모/자식 관계와 동일하거나 공유하는 경로는 다른 액세스 방법을 사용하여 동일한 명령이나 Notebook 셀에서 참조할 수 없습니다.

예를 들어, 외부 테이블 foo 이(가) 위치 hive_metastore 에서 a/b/c 에 정의되고, 외부 위치가 Unity 카탈로그의 a/b/에 정의된 경우, 다음 코드에서 오류가 발생합니다.

spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")

이 논리가 두 개의 셀로 나뉘면 이 오류가 발생하지 않습니다.

df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")