Katalog federasyonu nedir?

Katalog federasyonuyla, nesne depolamadaki yabancı tabloya doğrudan erişin. Sorgu yalnızca Databricks işlemi kullanılarak yürütülür ve bu nedenle daha uygun maliyetli ve performans açısından iyileştirilmiştir. Katalog federasyonu, katalog hizmetleri olan ve harici Hive metastore'ları, eski Databricks Hive metastore'ları, Salesforce Data 360, Snowflake, OneLake, Palantir Foundry ve Workday Data Connect gibi açık tablo formatlarını destekleyen platformlara federasyon olarak kullanılır.

Katalog federasyonuna genel bakış diyagramı

Yaygın kullanım örnekleri

Yaygın kullanım örnekleri şunlardır:

  • Unity Kataloğu'na geçiş yolunda bir adım olarak, kod uyarlaması gerektirmeden artımlı geçişi sağlamaya yönelik bazı iş yüklerinizin dış kataloğunuzda kayıtlı verileri kullanmaya devam etmesi, diğerlerinin ise taşınması sürecini gerçekleştirin.
  • Bazı verileri bir dış katalogda tutması gereken ve bu verileri Unity Kataloğu'nda kayıtlı verileriyle birlikte yönetmesi gereken kuruluşlar için uzun vadeli bir karma model sunmak amacıyla.

Katalog federasyonuna genel bakış

Katalog federasyonuyla, Databricks çalışma alanınızdan dış kataloğunuza bir bağlantı oluşturursunuz ve Unity Kataloğu, kuruluşunuzun Unity Kataloğu'nda dış katalog tablolarınızla çalışmasını sağlayarak merkezi erişim denetimleri, köken, arama ve daha fazlasını sağlayan, bazen birleştirilmiş katalog olarak da adlandırılan yabancı bir kataloğu doldurmak için dış katalogda geziniyor.

Databricks çalışma alanınızın dışında olan federasyon dış katalogları Unity Kataloğu kullanılarak okumalara izin verir. İç Hive meta veri depoları okuma ve yazma işlemlerine izin verir, meta verileri değiştirdiğinizde Hive meta veri deposu meta verilerini ve Unity Kataloğu meta verilerini güncelleştirir.

Federasyon dış kataloğundaki yabancı tabloları sorguladığınızda Unity Kataloğu, dış katalog semantiği kullanılarak sorgular yürütülürken erişim denetimi denetimleri ve denetim gibi işlevleri gerçekleştiren idare katmanını sağlar. Örneğin, bir kullanıcı yabancı katalogda Parquet biçiminde depolanan bir tabloyu sorgularsa:

  • Unity Kataloğu, kullanıcının tabloya erişimi olup olmadığını denetler ve sorgu için köken çıkartır.
  • Sorgunun kendisi, temel alınan dış katalogda çalıştırılır ve burada depolanan en son meta veriler ve bölüm bilgilerinden yararlanılır.

Yetkili yollar nelerdir?

Hive meta veri deposu federasyonu tarafından desteklenen bir yabancı katalog oluşturduğunuzda, Hive meta veri deposu tablolarının depolandığı bulut depolamaya yetkili yollar sağlamanız istenir. Hive meta veri deposu federasyonu kullanarak erişmek istediğiniz tüm tablolar bu yolların kapsamına alınmalıdır. Databricks, yetkili yollarınızın çok sayıda tabloda ortak olan alt yollar olmasını önerir. Örneğin, s3://bucket/table1, s3://bucket/table2ve s3://bucket/table3tablolarınız varsa, yetkili yol olarak s3://bucket/ sağlamalısınız.

Yetkili yollar, Hive meta veri deposu federasyonu tarafından yedeklenen yabancı kataloglara ek bir güvenlik katmanı ekler. Katalog sahibinin kullanıcıların federasyon kullanarak erişebileceği verilere korumalar uygulamasına olanak tanır. Hive meta veri deponuz kullanıcıların meta verileri güncellemesine ve tablo konumlarını keyfi olarak değiştirmesine izin veriyorsa, bu durum harici katalogda eşitlenecek güncellemeler için faydalıdır. Bu senaryoda, kullanıcılar zaten erişimi olan tabloları yeniden tanımlayabilir ve böylece başka türlü erişmeyecekleri yeni konumlara işaret edebilir.

Örnek: Güvenli olmayan Hive meta veri deposu

Aşağıdaki örnekte, kötü niyetli bir kullanıcının güvenli olmayan hive meta veri deposundaki yolları değiştirerek Unity Kataloğu izinlerini nasıl atladığı ve federasyon kataloğundaki hassas verilere nasıl erişebileceği gösterilmektedir.

Bir yönetici Hive meta veri deposu federasyonu ayarlar ve Paul'a Unity Kataloğu'ndaki şemaya non_sensitive erişim verir. Paul'un Unity Kataloğu'ndaki şemaya sensitive_table erişimi yok.

Yabancı şema erişim diyagramı

Unity Kataloğu güvenli olsa da Hive meta veri deposu güvenli değildir. Paul, Hive metastore'daki tablonun non_sensitive_table yolunu s3://abc/def olarak değiştirme yeteneğine sahiptir. Bir sonraki federasyon kataloğu yenilemesinde, Unity Kataloğu'ndaki federasyon tablosunun yolu güncelleştirilir. Unity Kataloğu'nun zaten erişim için s3://abc/def bir depolama kimlik bilgisi olduğundan ve Paul'un SELECT erişimi olduğundan, Paul artık sensitive_table tablosundan veriye erişebilir.

Güvenli olmayan Hive meta veri deposu diyagramı

Uygun ölçekte yetkili yollar eklemek için aşağıdaki araçları kullanabilirsiniz:

Meta verileri yenileme

Unity Kataloğu, sorgu zamanında yabancı tablolar için meta verileri otomatik olarak yeniler. Dış kataloğun şeması değişirse Unity Kataloğu sorgu çalıştırıldığında en son meta verileri getirir. Bu davranış şemayı güncel tutar ve çoğu iş yükü için en uygun seçenektir.

Ancak Databricks, aşağıdaki durumlarda meta verilerin el ile yenilenmesini önerir:

  • Harici motorlar tarafından erişilen dış tabloların tutarlılığını korumak için. Databricks Runtime'ı atlayan yollar otomatik yenilemeleri tetiklemez ve bu da eski meta verilere neden olabilir.
  • Sorgu yürütme sırasında meta veri yenilemesini önlemek istediğiniz iş yüklerinin performansını geliştirmek için. Meta verileri önceden yenilemek, önbelleğe alınmış meta verileri kullanarak sorguların daha hızlı çalışmasını sağlar. Bu yaklaşım, yabancı katalog oluşturulduktan hemen sonra özellikle kullanışlıdır, çünkü aksi takdirde ilk sorgu tam bir yenilemeyi tetikler.

Lakeflow Jobs ile metaverileri otomatik olarak yenileştirme

SQL komutuyla bir Lakeflow İşi kullanarak düzenli aralıklarla meta veri yenilemesi REFRESH FOREIGN zamanlayın. Örneğin:

-- Refresh an entire catalog
REFRESH FOREIGN CATALOG some_catalog;
-- Refresh a specific schema
REFRESH FOREIGN SCHEMA some_catalog.some_schema;
-- Refresh a specific table
REFRESH FOREIGN TABLE some_catalog.some_schema.some_table;

Dış şema değişikliklerini ne sıklıkta tahmin ettiğinize bağlı olarak işi düzenli aralıklarla çalışacak şekilde yapılandırın.

Desteklenen veri kaynakları