Data Discovery Platform (DDP) hakkında her şey
(eugeneyan.com)Nemo, Amundsen, DataHub vb. araçlara neden ihtiyaç duyulduğu ve sundukları işlevlerin özeti
"Neden bir DDP’ye ihtiyaç var? Ne işe yarıyor?"
→ Kurum içinde ihtiyaç duyulan verinin nerede olduğunu hızlıca bulmaya, onun ne olduğunu anlamaya ve nasıl kullanılacağını öğrenmeye yardımcı olan platform
[ Veri ararken sık sorulan sorular ]
→ "_____" verisini nerede bulabilirim? : Hangi kelimeyle arama yapmak gerektiğini bile bilmediğiniz durumlar da olabilir. click, page view gibi kelimelerle tablo/sütun adlarında arama yapılır
→ Bu veri nedir? : Bu tabloda hangi sütunlar var, veri tipleri neler ve bu değerler ne anlama geliyor?
→ Erişim iznini kimden istemeliyim? : Verinin sahipliği ve yetki bilgisi de metadata’nın bir parçası olmalı
→ Bu veri nasıl üretildi? Güvenilir mi? : Kim oluşturdu, hangi süreçten geçti? Bir analist bunu aylık olarak elle mi hazırladı? Şirket içinde ne kadar kullanılıyor? Bu verinin lineage’ı nedir?
→ Bu veriyi nasıl kullanmalıyım? : Hangi sütunlar ilgili? Hangi tabloyla join yapmalıyım? Veriyi temizlemek için hangi filtreleri kullanmalıyım? Bu tabloyu en çok kim kullanıyor? (Çünkü o kişiye sorulabilir.) En sık hangi sütunlar kullanılıyor?
→ Bu veri ne kadar sıklıkla yenileniyor? : Bazen gecikiyorsa bu ne kadar sık oluyor? Verinin kapsadığı dönem ne kadar uzun? Sadece birkaç haftalık veri varsa machine learning için uygun olmayabilir.
[ Veriyi bulmak, anlamak ve kullanmak için gereken işlevler ]
- Veriyi arama veya daha akıllı yollarla bulma
→ İstenen veriyi bulmanın temel yöntemi; sütun adı, tablo ve sütun açıklamaları, kullanıcıların girdiği açıklama ya da yorum gibi metadata’yı ElasticSearch içinde aramaktır
→ Çok fazla arama sonucu varsa bunları önceliklendirmek gerekir. Lyft ve Spotify örneğinde sıralama, tablonun ne kadar sık kullanıldığına göre belirlenir. Yani query log’ları parse edilerek tablo kullanım miktarı ElasticSearch’ün ranking bilgisine eklenir.
→ Facebook’un Nemo’su bunu daha da genişletiyor. Arama terimlerini spaCy ile doğal dil olarak parse edip, sosyal grafik aramasında kullanılan Unicorn ile kNN tabanlı scoring gibi yöntemlerle sıralama belirleniyor
→ Bir diğer yöntem de öneri sistemi. Organizasyon ve ekip içinde en çok erişilen ve kullanılan verileri önerir
- Veriyi schema, preview, istatistikler ve lineage ile anlama
→ Bir tabloyu anlamak için temel bilgi veri schema’sıdır: sütun adları, veri tipi, açıklama (Description)
→ Kullanıcının okuma yetkisi varsa verinin bir preview’si (yaklaşık 100 satır) sunulabilir
→ Önceden hesaplanmış sütun bazlı istatistikler de sunulur: sütun başına satır sayısı, Null satır sayısı, maksimum/minimum/ortalama/medyan/standart sapma, benzersiz satır sayısı; tarih sütunları için verinin toplam zaman aralığı
→ Veri lineage’ı sunularak öncesi-sonrası bağımlılık ilişkileri de görülebilir: ETL işleri (Airflow ile schedule edilen) için schedule veya gecikme durumu gibi bilgiler kontrol edilebilir.
- Diğer kullanıcıların kullanım biçimlerinden veriyi nasıl kullanacağınızı öğrenme
→ Tabloyu bulduktan sonra, o tabloyu kullanmanıza nasıl yardımcı olunabilir? Basit bir yöntem, o tabloyla ilişkili kişileri göstermektir
→ Veri sahibi erişim izni verebilir; sık kullanan kişiler de veriyle ilgili genel bilgi veya dikkat edilmesi gereken noktaları aktarabilir: Amundsen ve DataHub, tablolarla insanları entity olarak bağlayabiliyor
→ Ancak yalnızca o veriyi çok iyi bilen uzmanlara dayanmak darboğaz yaratabilir; bu nedenle ek metadata bağlamak daha scalable bir yaklaşımdır
→ Kullanıcının en ilgili sütunları bulabilmesi için, her sütunun kullanım istatistiklerini sunmak mümkündür.
→ Ayrıca o tabloyla join yapılacak tabloları anlamak için, sık join edilen tabloların listesi ve join edilen sütunların gösterilmesi faydalıdır. Bu tür veriler query log parse etmeyi gerektirir
→ Veri kullanımına dair daha ayrıntılı bilgi vermek için, ilgili tabloya ait son query’leri göstermek mümkündür; böylece pratikte hangi verilerin nasıl filtrelendiği görülebilir.
→ Veri lineage’ı da faydalıdır. Mevcut tabloyu kullanan downstream tablolar görülebilir ve bunları oluşturan query’ler de gösterilebilir. Böylece tablonun başka use case’lerde nasıl kullanıldığı anlaşılabilir
→ Bu şekilde bulunan downstream tablolar sizin amacınızla örtüşüyorsa, onları kullanmak hesaplama/depolama maliyetini azaltabilir.
→ Twitter’ın Data Access Layer’ı, Uber’in Databook’u ve Netflix’in Metacat’i lineage desteği sunuyor
→ Veriyi gerçekten kullanmadan önce, ne kadar sık güncellendiğini bilmek de istenir. Verinin hangi zaman biriminde (gün/saat vb.) partition edildiğini belirtmek yardımcı olur.
→ DDP, Airflow gibi platformlarla entegre olarak schedule edilen ETL işlerini inceleyebilir ve ne kadar sürdüklerini gösterebilir.
[ DDP’lerin üst düzey karşılaştırması ]
→ Hepsi ElasticSearch veya Solr tabanlı free-text aramayı destekliyor. Amundsen ve Lexikon, ana sayfada öneri işlevi sunuyor
→ Hepsi temel tablo bilgisini (schema, açıklama) gösteriyor. Amundsen ve Databook, veri preview’si ve sütun istatistikleri sağlıyor
→ Platformların çoğunda veri lineage işlevi yerleşik. Amundsen şu an desteklemiyor ama 2020 roadmap’inde var
→ 5 platform açık kaynak olarak yayımlanmış durumda
[ Açık kaynak DDP’lerin karşılaştırması ]
- DataHub (LinkedIn) : https://github.com/linkedin/datahub
→ 2020 Şubat’ta yayımlandı
→ Arama, tablo schema’sı, sahiplik ve lineage işlevlerini destekliyor
→ Üç entity destekliyor: Dataset, User, Group. Schemas/Jobs/Metrics/Dashboards gibi entity’lerin eklenmesi planlanıyor
→ Hive, Kafka, RDB metadata’sını destekliyor (şirket içinde daha fazlası destekleniyor; ileride daha fazlası açılabilir)
→ Expedia ve TypeForm tarafından benimsenmiş; ayrıca MS, Morgan Stanley, Orange Telecom, ThoughtWorks gibi şirketlerde de POC aşamasında
- Amundsen (Lyft) : https://github.com/amundsen-io/amundsen
→ 2019 Ekim’de yayımlandı
→ Arama, öneri, preview/sütun istatistikleri/sahipler/ana kullanıcıların iyi gösterildiği ayrıntılı tablo sayfasını destekliyor. Lineage işlevi henüz yok ama eklenmesi planlanıyor
→ Data Quality System ile entegrasyon da planlanıyor (muhtemelen Great Expectations - https://greatexpectations.io/)
→ Güçlü bir topluluğa sahip: BigQuery/Redshift/Apache Atlas vb. entegrasyonlar geliştirip katkı sağlıyorlar
→ 15’ten fazla veri kaynağıyla (Redshift, Cassandra, Hive, Snowflake ve çeşitli RDB’ler), Tableau, Redash, Mode Analytics dashboard’ları ve Airflow ile entegrasyonu destekliyor
→ Dokümantasyonu iyi ve Docker ile yerelde test edilebiliyor
→ Asana, Instacart, iRobot, Square dahil 30’dan fazla organizasyon tarafından kullanılıyor.
→ 2020 Temmuz’da Linux AI Foundation’ın yeni incubation projesi olarak katıldı.
- Metacat (Netflix) : https://github.com/Netflix/metacat
→ 2018 Haziran’da yayımlandı
→ Arama, schema görüntüleme ve maliyet ile alan kullanımını analiz eden metrikleri içeriyor.
→ Tablo/partition değişiklikleri için bildirim özelliği var. Maliyet vb. nedenlerle silindiğinde uyarı almak mümkün.
→ Hive, Teradata, Redshift, S3, Cassandra, RDS entegrasyonunu destekliyor
→ Schema/metadata için versioning/doğrulama işlevleri üzerinde çalıştıklarını belirtmişlerdi.
→ Açık kaynak olmasına rağmen hiç dokümantasyon olmadığı için benimseyen bir şirket yok.
- Marquez (WeWork) : https://github.com/MarquezProject/marquez
→ 2018 Ekim’de yayımlandı
→ Veri kalitesi ve lineage’a odaklanıyor
→ Data governance, Great Expectations üzerinden veri kalitesi ve dataset ile job katalog desteği sunuyor
→ WebUI ile birlikte Airflow bileşenleri ve Java/Python client’ları sağlıyor
→ Docker ile yerelde test edilebiliyor ama dokümantasyon çok fazla değil
- Apache Atlas (Hortonworks) : https://atlas.apache.org/
→ 2015 Temmuz’da Data Governance Initiative’in bir parçası olarak başladı
→ 2018 Haziran’da 1.0 yayımlandı ve şu anda 2.1 sürümünde
→ Ana hedefi data governance; kurumların güvenlik/compliance gereksinimlerine uymasına yardımcı olmak.
→ Kaynakları etiketleme, downstream dataset’lere etiket aktarımı, metadata erişimi için güvenlik gibi zengin özelliklere sahip
→ Metadata değişiklikleri için bildirim işlevi de mevcut
→ free-text arama, ayrıntılı schema görüntüleme, veri lineage desteği sunuyor
→ Gelişmiş arama işleviyle SQL benzeri sözdizimi kullanarak aramayı da destekliyor
→ HBase, Hive, Kafka vb. metadata kaynaklarıyla entegrasyonu destekliyor
→ Metadata’yı REST API üzerinden oluşturmak/değiştirmek de mümkün
→ Dokümantasyonu da iyi
-
ING’nin Atlas ile Amundsen’i birlikte devreye aldığı örnek ilginç: https://medium.com/wbaa/…
-
Tam anlamıyla bir DDP olmasa da açık kaynak Whale, data warehouse içeriğini Markdown olarak indeksleyen son derece basit bir DDP aracı; arama, düzenleme, versioning vb. destekliyor
→ Geliştiriciler için bir DDP aracı olarak incelenmeye değer: https://github.com/dataframehq/whale
- Machine learning kadar “seksi” görünmese de data discovery, data science workflow’unun önemli ilk adımıdır
2 yorum
Vay, gerçekten çok iyi bir derleme. Sanırım Amundsen’i bir kez denemem gerekecek.
Nemo - Facebook'un veri keşif platformu https://tr.news.hada.io/topic?id=3024
Yurt içinde pek görülmeyen DDP kurulum örnekleri