Impala Bölüm 15: Sorgu Performansı

Impala, sorgunun nasıl yürütüldüğüne ve darboğazların nerede olduğuna dair kapsamlı bir genel bakış sağlayan bir dizi araç sunar. Sorgunun verimli bir şekilde yürütülüp yürütülmeyeceğini belirlemek için bu araçların çıktısını kullanabilirsiniz. Impala, sorguları analiz etmek için 3 farklı araç kullanılabilir: EXPLAIN, sorguyu fiilen yürütmeden plan fragment’lerini döndürür. SUMMARY, çalışma süresi istatistiklerine üst düzey bir genel bakış […]

Impala Bölüm 14: Impalad Query Coordinator ve Query Executer

Impalad Query Coordinator Query Coordinator, fragment’leri node kullanılabilirliğine ve verinin konumuna göre dağıtır. Her node’un kullanılabilirliği Statestore servisi tarafından iletilir ve verinin konumu ile ilgili bilgiler ise HDFS Name Node’dan gelir. Fragment’ler dağıtıldıktan sonra Query Coordinator, uzak Impala Daemon’larında execute eder. Tek bir fragment başarısız olursa, Coordinator tüm sorguyu iptal eder ve kullanıcıya bir hata […]

Impala Bölüm 13: Impalad Query Planner

Impala mimarisini anlatırken Query Planner’dan bahsetmiştik; ama oldukça sığ bir şekilde bahsetmiştik. Bu kısmı anlamak, sorgularınızın nasıl işlediğini ve dolayısıyla Impala’nın çalışma mantığını anlamak açısından önemli. O yüzden bu bölümde biraz daha detaylarına gireceğiz. Query Planner, sorgu ulaştığında öncelikle mantıksal bir plan oluşturur. Oluşturulan bu planın execute edilebilmesi için en iyi duruma getirir ve son […]

Impala Bölüm 12: Paralel Sorgular

Impala, teorik olarak Daemon başına concurrent (eş zamanlı) 64 sorgu kabul etmektedir. Pratikte ise concurrent sorgu sayısı arttıkça, sorgu sonuçlarının dönme süresi uzamaktadır. Impala’nın en büyük açmazlarından biri concurrent sorgu sınırıdır. Bir production ortamında, Warehouse olarak Big Data ortamını kullanacaksanız, şirketin çalışan sayısı büyükse, analitik, data science, iş zekası gibi görevlerde konumlanmış kişilerin aktif olarak […]

Impala Bölüm 11: İstatistikler

Şimdiye kadar işlediğimiz konularda istatistiklerin ne kadar önemli olduğunu anlamışsınızdır. Neredeyse her yaptığımız işi ciddi derecede etiklediği, sorgu performanslarına ve planların çıkarılmasına önemli derecede öncülük ettiği için oldukça önemlidir. İstatistiklerde tutulan bilgiler, satır sayısı, data fiile sayısı, data file’ların toplam boyutu ve file formatı gibi fiziksel özellikleri içerir. Partitioned tablolar için, istatiskler partition başına ve […]

Impala Bölüm 10: Parquet Dosyalarında Insert Performasını Artırmak

Parquet dosyalarında Insert veya CTAS ile veri yüklemek istediğinizde, yüklenecek veri boyutlarına göre bazı performans problemleriyle karşılaşmanız olası. Bu durumlarda kullanabileceğimiz optimizer hint’ler bulunuyor. Eğer partitioned bir tabloda bu problemi yaşıyorsanız /* +SHUFFLE */ hint’ini kullanabilirsiniz. Shuffle, verileri yazmadan önce hedef tablonun partition sütununa göre Select sonucunu re-partition yapan bir Exchange Node ekler. Bununla birlikte […]

Impala Bölüm 9: Impala Table File

Impala’da tablonun dosya formatı konusu Hive kadar gelişmiş değildir. En stabil olarak çalışabileceğiniz dosya formatı Parquet formatıdır. Öncelikle dosya formatlarına bir göz atalım. Hive konusunu okuduysanız bunları biliyorsunuzdur; ama direk Impala’yı okumaya başladığınızı düşünerek bir tekrar yapacağım ve ardından bunların Impala üzerindeki kullanımlarından bahsedeceğim. SequenceFile Verileri anahtar / değer çiftleri olarak saklar. SequenceFiles içinde saklanan […]

Impala Bölüm 8: Join

Impala, Hive’a göre join konusunda biraz daha geniş bir desteğe sahiptir. Fakat unutmamak lazım ki join işlemleri performans sorunlarına yol açacaktır, bu sebeple yapınızı minimal join ihtiyaçlarına göre tasarlamanız yerinde olacaktır. Impala’da ilişkisel veritabanlarında olduğu gibi sütun eşleştirmesi temelinde bir join yapısı mevcuttur. Inner Join Seçilen tabloların kesişim kümesini getirir, yani sadece eşleşen kayıtlar gelir. […]

Impala Bölüm 7: Partitioning

Hive konusunu okuduysanız da Impala’da bazı şeyler değişiyor, bu yüzden konuyu tekrarlamak istiyorum. Partitioning performans için önemli bir etkendir. Temelde tablo verilerini partition key dediğimiz, belirli bir sütun değerine göre verileri parçalayarak saklarız. Petabyte boyutunda verileri tararken, sorgularımızda filtrelerken tüm tablo taranacağı için (full scan) veri boyutuna göre sürecin oldukça uzaması söz konusudur. Bu sebeple […]

Impala Bölüm 6: Impala Shell

Impala’ya’a genelde Hue ile bağlanıp, editör üzerinden işlerimizi yapabiliyoruz, en yaygın kullanılan yapı da budur. Fakat bazen bir şeyleri programatik yapmak istiyorsak, yani bir cron job kurup belirli aralıklarla bir işi gerçekleştirmesini istiyorsak bunu Hue üzerinden yapamıyoruz. Bu tür durumlarda Impala Shell ortamını kullanmak avantajlı oluyor. Temelde Impala Shell’e bağlanmak çok basittir:

Bağlandığınızda: Sunucu_adı […]

Impala Bölüm 5: Sorted Table

Impala’ya has yapılardan biridir. Tablo Create ederken SORT BY ifadesi ile verilerin Insert veya CTAS kullanımı ile yüklenmesi esnasında sırlama işlemini gerçekleştirir. Sıralanmış data file oluşturmak, en çok Parquet tabloları için uygundur. Çünkü  her dosyanın içinde depolanan meta data’ların dosyadaki her sütun için minimum ve maksimum değerleri içerir. (İstatistikler dosyadaki her satır grubu için geçerlidir; […]

Impala Bölüm 4: Impala Komutları

Database Öncelikle database’in ne olduğunu anlayalım: Database, ilgili tabloları tek bir namespace altında gruplamak için mantıksal (logic) bir varlıktır. Impala üzerinde bir database create ettiğimizde HDFS üzerinde database_name.db adında bir dizin oluşturulur. Tüm internal tablolar, partition’lar ve data file’lar bu dizinin içine kaydedilir. Şimdi Impala’da database özgü birkaç ifadeye bakalım. Create Bir database oluşturmak istediğimizde […]

Impala Bölüm 3: Impala Mimarisi

Impala mimarisinde 3 temel bileşen bulunuyor. Impala Daemon Impala Statestore Impala Catalog Service Şimdi bunları inceleyelim. Impala Daemon Impala’nın kurulduğu her data node üzerinde çalışan bileşendir. Servisleri kontrol ettiğimizde impalad adı ile görebiliriz. Impala Shell, HUE, API’lar, JDBC ve ODBC ile bağlanan diğer tüm uygulamalar tarafından gönderilen sorguların işletilmesi Impala Deamon’ın sorumluluğundadır. Herhangi bir node […]

Impala Bölüm 2: Impala’nın Bağımlılıkları (Dependency)

Hive Impala temelde verileri Hive’ın Metastore database’inde saklar, bu sebeple Metastore database’i olmadan çalışamaz. Bunun dışında sanılanın aksine Hive ile başka bir bağımlılığı bulunmuyor. Bu sebeple Hive ve Impala’nın aynı node’lar üzerinde kurulması gerekmez. Metastore, bildiğiniz gibi genelde MySQL, MariaDB veya PostgreSQL üzerinde store edilir. Dolayısıyla bu rdbms’lerden birine de bağımlılığı bulunuyor. Impala, Apache Hive’da […]

Impala Bölüm 1: Impala Nedir ve Neden Impala?

Impala Nedir? Hive gibi SQL temelli veri analizi yapabileceğiniz bir engine’dir Impala. Cloudera tarafından geliştirildi ve Open Source dünyaya verildi. Hive ile çalıştırdığınız komutların çok büyük bir kısmını Impala üzerinde de çalıştırabilirsiniz. Impala’da verileri temelde HDFS üzerinde saklar ve yalnızca tablo halinde yapılandırılmış verileri sorgulamamıza olanak sağlar. Neden Impala? Genel olarak Big Data ortamlarında Hive’dan […]

ZooKeeper Bölüm 1: Nedir, Ne Değildir?

Big Data mevzu bahis olunca hemen her yerde Hadoop, Hive, Impala, Spark vb. konuşulduğunu görürüz; ama arkalarındaki büyük kahraman, dağıtık sistemi mümkün kılan ZooKeeper pek de konuşulmaz. Halbuki dağıtık sistemi kalbidir. Bu sebeple diğerlerini ele almadan önce ZooKeeper’ı ele almak istedim.   Dağıtık bir sistem geliştirmeye başladığınızda karşınızda devasa birçok sorun bulunmaktadır. Farklı sunucular üzerinde […]

Hadoop’ta Verilerimiz Nasıl Saklanıyor?

Hadoop’ta verilerimiz HDFS içerisinde saklanır. HDFS üzerinde ise dilediğimiz herhangi bir formatta veriyi atabiliriz. Örneğin bir video dosyasının .mp4, .avi gibi herhangi bir formata sahip olabilir, bunun için bir kısıtlaması yoktur. Kritik olan ise metin dosyalarıdır. Bunun için yine bir sınırlama yoktur, yani .txt veya .csv gibi bir formatta atabilirsiniz; fakat ileride göreceğimiz gibi Hive, […]