Najlepsze praktyki dotyczące systemu plików DBFS i wykazu Unity
Unity Catalog wprowadza szereg nowych konfiguracji i pojęć, które podchodzą do zarządzania danymi zupełnie inaczej niż DBFS. W tym artykule opisano kilka najlepszych praktyk dotyczących pracy z lokalizacjami zewnętrznymi katalogiem Unity i systemem plików DBFS.
Usługa Databricks odradza używanie systemu plików DBFS i podłączonego magazynu obiektów w chmurze w większości przypadków użycia w obszarach roboczych usługi Azure Databricks z obsługą wykazu Unity Catalog. W tym artykule opisano kilka scenariuszy, w których należy użyć zainstalowanego magazynu obiektów w chmurze. Pamiętaj, że Databricks nie zaleca używania katalogu głównego DBFS w połączeniu z Unity Catalog, chyba że musisz migrować pliki lub dane przechowywane tam do Unity Catalog.
W jaki sposób DBFS jest używany w obszarach roboczych z włączonym systemem katalogów Unity?
Akcje wykonywane na tabelach w hive_metastore
używają przestarzałych wzorców dostępu do danych, które mogą obejmować poświadczenia dotyczące danych i magazynu zarządzane przez DBFS (Distributed File System). Tabele zarządzane w zakresie obszaru roboczego hive_metastore
są przechowywane w głównym katalogu systemu plików DBFS.
Jak system plików DBFS działa w trybie dostępu pojedynczego użytkownika?
Klastry skonfigurowane w trybie dostępu pojedynczego użytkownika mają pełny dostęp do systemu plików DBFS, w tym wszystkich plików w katalogu głównym systemu plików DBFS i zainstalowanych danych.
Jak system plików DBFS działa w trybie dostępu współdzielonego?
Tryb dostępu współdzielonego łączy zarządzanie danymi w Unity Catalog ze starszymi listami ACL tabel w Azure Databricks. Dostęp do danych w hive_metastore
jest dostępny tylko dla użytkowników, którzy mają jawnie przyznane uprawnienia.
Aby korzystać z plików bezpośrednio przy użyciu systemu plików DBFS, musisz mieć przyznane uprawnienia ANY FILE
. Ponieważ ANY FILE
umożliwia użytkownikom pomijanie starszych zasad kontrolnych dostępu (ACL) w hive_metastore
i uzyskiwanie dostępu do wszystkich danych zarządzanych przez DBFS, usługa Databricks zaleca ostrożność przy nadawaniu tego uprawnienia.
Nie używaj DBFS z zewnętrznymi lokalizacjami w Unity Catalog.
Katalog Unity zabezpiecza dostęp do danych w lokalizacjach zewnętrznych przy użyciu pełnych ścieżek identyfikatorów URI w chmurze do identyfikacji uprawnień w zarządzanych katalogach magazynowych. Montaże DBFS korzystają z zupełnie innego modelu dostępu do danych, który całkowicie pomija Unity Catalog. Usługa Databricks zaleca, aby nie używać ponownie woluminów magazynu obiektów w chmurze między instalacjami systemu plików DBFS i woluminami zewnętrznymi UC, w tym podczas udostępniania danych między obszarami roboczymi lub kontami.
Zabezpiecz magazyn zarządzany przez katalog Unity
Unity Catalog wykorzystuje zarządzane lokalizacje magazynu do przechowywania plików danych dla tabel zarządzanych i woluminów.
Usługa Databricks zaleca następujące lokalizacje magazynu zarządzanego:
- Użyj nowych kont magazynowych lub bucketów.
- Zdefiniuj niestandardowe zasady tożsamości dla Unity Catalog.
- Ogranicz cały dostęp do usługi Azure Databricks zarządzanego przez Unity Catalog.
- Ogranicz cały dostęp do zasad dostępu do tożsamości utworzonych dla wykazu aparatu Unity.
Dodawanie istniejących danych do lokalizacji zewnętrznych
Istnieje możliwość załadowania istniejących kont magazynowych do katalogu Unity przy użyciu lokalizacji zewnętrznych. Dla maksymalnego bezpieczeństwa, Databricks zaleca ładowanie kont magazynowych wyłącznie do lokalizacji zewnętrznych po odwołaniu wszystkich pozostałych poświadczeń i wzorców dostępu do magazynu.
Nigdy nie należy ładować konta magazynu używanego jako root w systemie plików DBFS jako lokalizacji zewnętrznej w ramach Unity Catalog.
Konfiguracje klastrów są ignorowane przez dostęp do systemu plików w Unity Catalog.
Katalog Unity nie uwzględnia konfiguracji klastra w ustawieniach systemu plików. Oznacza to, że ustawienia systemu plików Hadoop do konfigurowania niestandardowego zachowania z magazynem obiektów w chmurze nie działają podczas korzystania z Unity Catalog w celu uzyskania dostępu do danych.
Ograniczenie dotyczące dostępu do wielu ścieżek
Chociaż ogólnie można używać Unity Catalog i DBFS razem, ścieżki, które są identyczne lub dzielą relację nadrzędną/podrzędną, nie mogą być odwoływane w tym samym poleceniu lub komórce notesu przy użyciu różnych metod dostępu.
Jeśli na przykład zewnętrzna tabela foo
jest zdefiniowana w hive_metastore
w lokalizacji a/b/c
, a lokalizacja zewnętrzna jest zdefiniowana w katalogu Unity w a/b/
, następujący kod zgłosi błąd:
spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")
Ten błąd nie wystąpi, jeśli ta logika zostanie podzielona na dwie komórki:
df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")