Impala Bölüm 3: Impala Mimarisi

Cloudera Impala

Impala mimarisinde 3 temel bileşen bulunuyor.

  1. Impala Daemon
  2. Impala Statestore
  3. Impala Catalog Service

Şimdi bunları inceleyelim.

impala architecture
impala architecture

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 üzerinde çalışan Impala Daemon ‘a sorgu gönderilebilir, bu durumda ilgili Impala Daemon, Coordinator Node rolünü üstlenmiş olur. Coordinator Node, sorgunun paralel şekilde işlenmesini yani diğer node’lar üzerine dağıtılmasını sağlar. Sorguları işleyen Impala Daemon’lar, sonucu da Coordinator Node’a yönlendirir. Coordinator Node’da son çıktıyı kullanıcıya döndürür.

Bu çalışma modelinden ötürü Impala’yı genellikle bir load balancer arkasında çalışır pozisyonda görürsünüz. Gelen istekler tek bir node üzerine yığılmasın diye round robin olarak Impala Daemon’lara yönlendirilirler.

Bir Impala Daemon’a sorgu gönderildiğinde, sorguyu öncelikle Query Planner karşılar, kontrol eder ve onaylar. Onay sonrasında ise sorgu için bir fragment’lerden oluşan bir plan oluşturur, sonra da bu planı Query Coordinator’a iletir.

Query Coordinator’ın ne yapyığından yukarıda bahsetmiştik, o yüzden ek olarak burada tekrarlamayacağım. Bilmemiz gereken son şey, Query Coordinator, plandaki fragment’leri cluster’daki Daemon’lara iletir ve sonuçların toplanması işlemlerini yürütür.

Fragmentlerin işletilmesi Query Execution Engine ile gerçekleştirilir. Coordinator’dan gelen fragment’lerin çalışması bitince de sonucu tekrar geri iletir. İleride bu konuları daha ayrıntılı bir şekilde inceleyeceğiz.

Impala Statestore

Temel görevi Impala Daemon’ların health check’ini (Sağlıklılık Kontrolü) yapar ve her bir Daemon’un bilgisini diğer Daemon’lara iletmekle görevlidir. Impala Statestore tekil çalışan bir process’tir. Servisleri kontrol ettiğimizde statestored adı ile görebiliriz.

Her bir Impala Daemon sıklıkla Impala Statestore ile iletişim kurar, kendi durumlarını ilettiği gibi, diğer daemon’ların durumunu da öğrenir. Coordinator Node haline gelen daemon, sorguyu paralelleştirirken diğer daemon’ların durumunu öğrenerek uygun olan daemon’lar üzerinde sorguyu paralelleştirmeyi sağlar.

Bir daemon kendi durumunu not healthy olarak ilettiyse, bu daemon üzerine yeni bir sorgu gönderilmez.

Statestore’un amacı, işler ters gittiğinde yardımcı olmak ve meta dataları Coordinator Node’lara yayınlamak olduğundan, bir Impala cluster’ının normal çalışması için her zaman kritik öncelikte değildir. Statedtore çalışmıyorsa veya erişilemez hale gelirse, Impala Daemon’lar, Impala tarafından bilinen verilerle çalışırken normal zamandaki gibi çalışmaya ve işleri kendi aralarında dağıtmaya devam ederler. Diğer Impala Daemon’lar fail olursa cluster daha düşük stabilite durumuna gelir ve Statestore offline’ken meta data’lar değiştikçe daha az tutarlı hale gelir. StateStore tekrar online olduğunda, Impala Daemon’lar ile iletişimi yeniden kurar ve izleme ve yayınlama işlevlerini sürdürür.

StateStore kapalıyken bir DDL ifadesi çalıştırırsanız, DDL’nin oluşturduğu yeni nesneye erişen sorgular başarısız olur.

Load balancing ve high availibility ile ilgili en önemli hususlar impalad için geçerlidir. Statestored ve Catalogd high availibility için özel gereksinimleri yoktur, çünkü bu daemon’larla ilgili sorunlar veri kaybına neden olmaz. Belirli bir host’taki kesinti nedeniyle bu daemon’lar kullanılamaz hale gelirse, Impala servisi durdurabilir, Impala Statestore ve Impala Catalog Service rollerini silebilir, rolleri farklı bir ana bilgisayarda ekleyebilir ve Impala hizmetini yeniden başlatabilirsiniz.

Impala Catalog Service

Daha önce Impala meta dataları Hive Metastore’dan alıyor demiştik. Bir tanımlama yapıldığında, bir schema değişikliği yapıldığında, bir tablo silindiğinde tüm işlemler Metastore üzerinde gerçekleşirler.

Catalog Service olarak bilinen Impala bileşeni, meta data değişikliklerini Impala SQL ifadelerinden bir cluster’daki tüm Impala Daemon’larına aktarır. Servisleri kontrol ettiğimizde Catalogd adı ile görebiliriz. Catalog Service’te Statestore gibi tekil çalışan bir process’tir. İstekler Statestore aracılığıyla iletildiğinden, Statestored ve Catalogd’nin aynı host üzerinde çalıştırılması mantıklıdır. Özetle tek bir host üzerinde çalışmaları yeterlidir.

Catalog Service, meta data değişiklikleri Impala üzerinden yapıldığı durumlarda değişikliği Impala Daemon’lara yayınlar. Fakat Hive üzerinde bir tablo oluşturduğunuzda, verileri yüklediğinizde vb. gerçekleştirdiğinizde, bu bilgilerden haberdar olunmaz. Bunun için bizim bazı komutları çalıştırmamız gerekir:

INVALIDATE METADATA: Bir tablo create veya drop edildiğinde, HDFS üzerinden veriler silindiğinde veya Rebalance işlemi yapıldığında Catalog Service’in güncellenmesi için çalıştırılır.

REFRESH: Mevcut bir tabloda güncelleme olduğunda, data file eklendiğinde Catalog Service’in güncellenmesi için çalıştırılır.

Impala Interface’leri

Impala Daemon’lara bir sorgu göndermek için bize şu interface’leri (Arayüz) sağlar.

  • Impala Shell: CLI (Command Line Interface) aracıdır.
  • Apache HUE: Bir Cloudera dağıtımı kullanıyorsanız oldukça aşina olduğunuz Web tabanlı bir arayüz sağlar. Standart olarak Hive ve Impala sorgularınız için kullanabilirsiniz. Bunun yanında başkalarını da ekleyebilirsiniz.
  • ODBC/JDBC: 3rd party bir uygulama kullanmak veya kendi uygulamanızı yazmak istediğinizde ODBC veya JDBC driver’lar aracılığı ile Impala Daemon’lara bağlanabilirsiniz.

Data Science Earth

Data Science Earth ekibi, üst düzey Veri Bilim çözümleri üretmek amacı ile toplanmış akademisyenler ve uzmanlardan oluşmaktadır. Öncelikli olarak veri bilincini geliştirmeyi ve küreselleşen rekabet ortamında verinin gücünün doğru kullanılmasını sağlamayı amaçlamaktadır.

Sponsor

QuestionPro 35 farklı soru seçim özelliği ile anket çalışmalarımıza güç katmaktadır.