Data Engineering

Küçük Ölçekten Kapsamlı Ölçeğe Uzmanlaşmak: Veri Mühendisleri İçin Apache Presto Kapsamlı Rehberi

Modern veri mühendisliği alanında, petabaytlarca veriyi saniyeler içinde sorgulama yeteneği bir lüks değil, bir zorunluluktur. Veri hacimleri heterojen kaynaklar arasında patlama yaptıkça, geleneksel toplu işleme hatları ad-hoc analizlerin gecikme gereksinimleriyle mücadele etmekte zorlanabilir. Apache Presto'ya girin; tüm boyuttaki veri kaynaklarına karşı etkileşimli hızda dağıtılmış sorgular çalıştırmak üzere tasarlanmış açık kaynaklı bir dağıtılmış SQL sorgu motorudur. Bu gönderi, veri yığınınızda Presto'dan yararlanmak için mimari, uygulama ve optimizasyon stratejilerine derinlemesine dalıyor.

Presto Mimarisi Anlamak

Özü itibarıyla Presto, bir ana-bağımsız (master-worker) mimarisi üzerinde çalışır. Koordinatör düğüm, sorguları ayrıştırmaktan, yürütme planları oluşturmak ve bağımsız düğümleri yönetmekten sorumludur. Bağımsız düğümler ise, planda tanımlanan gerçek görevleri yürüten iş gücüdür. Bu sorumluluk ayrımı, yüksek kullanılabilirlik ve ölçeklenebilirlik sağlar. MapReduce tabanlı sistemlerin aksine, Presto paylaşımsız (shared-nothing) bir mimari kullanır; yani her düğüm verisini yerel olarak depolar ve işler, bu da karıştırma (shuffle) aşaması sırasında ağ yükünü en aza indirir.

Bağlayıcı (connector) çerçevesi belki de Presto'nun en güçlü özelliğidir. Mühendislere, standart bir arayüz uygulayarak Hive, MySQL, Cassandra, Elasticsearch veya hatta özel API'ler gibi neredeyse herhangi bir veri kaynağına bağlanma imkanı tanır. Bu, veriyi önceden taşımadan, tek bir SQL ifadesinde bir NoSQL veritabanındaki veriyi bir veri ambarındaki verilerle birleştirebileceğiniz anlamına gelir.

Pratik Uygulama: Hive'a Bağlanma

Presto'nun en yaygın kullanım durumlarından biri, Apache Hive üzerinde yüksek performanslı bir sorgu katmanı olarak hareket etmektir. Bunu başarmak için, Presto katalog yapılandırmasındaki Hive bağlayıcısını yapılandırmanız gerekir. Aşağıda, `catalog` dizininiz içinde bir `hive.properties` yapılandırma dosyasının nasıl kurulacağına dair pratik bir örnek bulunmaktadır.

# Dosya: etc/catalog/hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://hive-metastore:9083
hive.config.resources=/etc/hadoop/conf/core-site.xml, /etc/hadoop/conf/hdfs-site.xml
hive.parquet.pushdown.enabled=true
hive.s3.use-instance-credentials=false

Bu yapılandırmada, HDFS veya S3'e erişmek için Hadoop istemci kitaplıklarından yararlanan bağlayıcı adını `hive-hadoop2` olarak belirtiyoruz. `hive.metastore.uri`, metastore hizmetinize işaret ederken, `hive.config.resources` Presto'nun Hadoop ortamınızdan güvenlik ve küme yapılandırmalarını devralmasını sağlar. Parquet itme (pushdown) özelliğini etkinleştirmek performans açısından kritiktir, çünkü bu, veri belleğe okunmadan önce filtreleme ve projeksiyonun depolama düzeyinde gerçekleşmesine olanak tanır.

Performans İçin Optimizasyon Stratejileri

Presto kutudan çıktığı anda hızlı olsa da, karmaşık analitik iş yükleri için sorguları optimize etmek, yürütme motorunun derin bir anlayışını gerektirir. Temel alanlardan biri bellek yönetimidir. Presto, diske dökülme ile veriyi bellekte tutma arasında denge kuran hibrit bir hash toplama algoritması kullanır. Presto UI'sındaki `SpilledBytes` (Dökülen Bayt) metriğini izlemek esastır; bu değer yüksekse, `query.max-memory-per-node` yapılandırmasını artırmayı düşünün.

Başka bir kritik optimizasyon, bölüm kesme (partition pruning) dir. Alt verinizin etkili bir şekilde (örneğin, tarih veya bölgeye göre) bölümlendirildiğinden emin olun. Bir sorgu, bölümlendirilmiş bir sütunda bir filtre içerdiğinde, Presto veri dizinlerinin tamamını okumayı atlayabilir. Presto UI'daki sorgu profilini inceleyerek, azaltılmış bir giriş bölme (split) sayısına sahip "TableScan" operatörünü arayarak bölüm kesmenin gerçekleştiğini doğrulayabilirsiniz.

Sonuç

Apache Presto, çeşitli veri göllerinde ve veri ambarlarında birleşik, etkileşimli SQL erişimi arayan kuruluşlar için temel bir teknoloji olarak yer edinmiştir. Bağlayıcı ekosistemi ve paylaşımsız mimarisi, modern veri mühendisliği zorlukları için gereken esnekliği ve hızı sağlar. Mimarisi anlamak, bağlayıcı yapılandırmalarını ustalaşmak ve sorgu performansını aktif olarak izlemek suretiyle, veri mühendisleri veri altyapılarının tam potansiyelini ortaya çıkarabilir. Veri manzaraları gelişmeye devam ettikçe, Presto gibi araçlar, ham veriyi benzeri görülmemiş hızda eyleme geçirilebilir içgörülere dönüştürmek için temel olmaya devam edecektir.

Share: