Apache Hive — Teorik-3

Hadoop ailesi temel üyelerinden Hive Manifestosunun teorik anlatımı

Adem Ok
5 min readSep 22, 2023

Merhabalar Hadoop ailesinin önemli bir üyesi olan Hive ile ilgili 3. bölüm teori yazıma devam ediyorum.

Bir önceki yazımda Apache Hive nedir detaylı olarak incelemiştim.Şimdi Hive Mimarisine derinlemesine dalacağız.Yazımda öncelikle Apache Hive teknolojisine kısa bir giriş yapacağım.

Daha sonra Hive mimarisini ve ana bileşenlerini gözlemleyeceğiz.Öncelikle Apache Hive’a Giriş ile başlayalım.

Hive Nedir?

Apache Hive, dağıtılmış işleme ve veri analizi gerçekleştirmek için kullanılan açık kaynaklı bir data warehouse aracıdır.Java MapReduce programının yazma işini azaltmak için Facebook tarafından geliştirilmiştir.

Apache Hive, SQL’e benzer bildirimsel bir dil olan Hive Sorgu dilini kullanır.Hive, Hive sorgularını MapReduce kodlarına çevirir.

Karmaşık Java MapReduce kodlarını Hive sorgularıyla değiştirerek, geliştiricilerin yapılandırılmış ve yarı yapılandırılmış veriler üzerinde işlem ve analizler gerçekleştirmesini destekler.

SQL komutlarına aşina olan biri Hive sorgularını kolaylıkla yazabilir.Hive, aşağıdaki gibi işlemleri gerçekleştirmek için işi kolaylaştırır:

  • Büyük verilerin analizi
  • Anlık sorgular
  • Veri kapsülleme

Hive Mimarisi

Hive mimarisi ve bileşenleri aşağıdaki şemadaki gibidir.

Apache Hive’ın ana bileşenleri şunlardır:

Hive Client

Hive Services

Processing and Resource Management

Distributed Storage

Hive Client

[ps2id id=’Hive-Client’ target=”/]

Yukarıdaki ifadede dikkatimizi çekecek şey ps2id id değerinin olmasıdır.Hive servisleri ayakta iken bu id değeri bize dolu gelir.Hizmetin ayakta olup olmadığını sorguladığımızda bize dönen id değeri işte budur.

Hive, Hive’da sorgu gerçekleştirmek için JDBC, ODBC ve Thrift sürücülerini kullanarak Python, Java, C++, Ruby vb. herhangi bir dilde yazılmış uygulamaları destekler.Dolayısıyla kişi kendi seçtiği herhangi bir dilde kolaylıkla Hive Client uygulaması yazabilir.

3 tür Hive Client vardır:

1. Thrift Clients

Hive sunucusu Apache Thrift’i temel aldığından, bir thrift istemcisinden gelen isteğe hizmet edebilir.

2. JDBC client

Hive, Java uygulamalarının JDBC sürücüsünü kullanarak kendisine bağlanmasına olanak tanır.JDBC sürücüsü, Hive Sunucusu ile iletişim kurmak için Thrift’i kullanır.

3. ODBC istemcisi

Hive ODBC sürücüsü, ODBC protokolünü temel alan uygulamaların Hive ortamına bağlanmasına olanak tanır.JDBC sürücüsüne benzer şekilde ODBC sürücüsü de Hive Sunucusu ile iletişim kurmak için Thrift’i kullanır.

Hive Service

Tüm sorguları gerçekleştirmek için Hive, Hive server2, Beeline vb. gibi çeşitli servisler sağlar. Hive tarafından sunulan çeşitli servisler şunlardır:

1. Beeline

Beeline, HiveServer2 tarafından desteklenen, kullanıcının sorgularını ve komutlarını sisteme gönderebildiği bir komut kabuğudur.SQLLINE CLI(ilişkisel veritabanlarına bağlanmak ve SQL sorgularını yürütmek için saf Java konsolu tabanlı yardımcı program) tabanlı bir JDBC istemcisidir .

2.Hive Server2

HiveServer2, HiveServer1'in varisidir.HiveServer2, istemcilerin Hive’a karşı sorgu yürütmesine olanak tanır.Birden fazla istemcinin Hive’a istek göndermesine ve nihai sonuçları almasına olanak tanır.Temel olarak JDBC ve ODBC gibi açık API istemcileri için en iyi desteği sağlamak üzere tasarlanmıştır.

Not:Thrift sunucusu olarak da adlandırılan Hive server1, Hive ile platformlar arası iletişimi yönetmek için Apache Thrift protokolü üzerine kurulmuştur.Farklı istemci uygulamalarının Hive’a istek göndermesine ve nihai sonuçları almasına olanak tanır.

HiveServer2 ile değiştirildiği için birden fazla istemciden gelen eşzamanlı istekleri işlemez.

3.Hive Driver

Hive sürücüsü,kullanıcı tarafından gönderilen HiveQL ifadelerini komut kabuğu aracılığıyla alır.Sorgu için session oluşturur ve sorguyu derleyiciye gönderir.

4.Hive Compiler

Hive derleyicisi sorguyu ayrıştırır.Metastore’da depolanan meta verileri kullanarak farklı sorgu blokları ve sorgu ifadeleri üzerinde anlamsal analiz ve tür kontrolü gerçekleştirir ve bir yürütme planı oluşturur.

Derleyici tarafından oluşturulan yürütme planı, her aşamanın bir map/reduce işi, HDFS üzerinde bir işlem, bir meta veri işlemi olduğu DAG’dir.

5.Optimizer

Optimizer, yürütme planındaki dönüşüm işlemlerini gerçekleştirir , verimliliği ve ölçeklenebilirliği artırmak için görevi böler.

6. Execution Engine

Execution Engine, compiler ve optimizer adımlarından sonra derleyicinin oluşturduğu yürütme planını bağımlılıklarına göre Hadoop kullanarak çalıştırır.

7.Metastore

Metastore, sütun ve sütun türü bilgileri de dahil olmak üzere tabloların ve partition nesnelerin yapısı hakkındaki meta veri bilgilerini saklayan merkezi bir depodur.

Ayrıca okuma/yazma işlemi için gerekli olan seri hale getirici ve seri durumdan çıkarıcı bilgilerini ve verilerin depolandığı HDFS dosyalarını da saklar.Bu metastore genellikle ilişkisel bir veritabanıdır.

Metastore, Hive meta verilerini sorgulamak ve değiştirmek için bir Thrift arayüzü sağlar.

Metastore’u iki moddan herhangi birinde yapılandırabiliriz:

Remote:Uzak modda, metastore bir Thrift hizmetidir ve Java dışı uygulamalar için kullanışlıdır.

Embedded:Gömülü modda istemci, JDBC’yi kullanarak meta veri deposuyla doğrudan etkileşim kurabilir.

8.HCatalog

HCatalog, Hadoop’un tablo ve storage yönetimi katmanıdır.Pig, MapReduce vb. farklı veri işleme araçlarına sahip kullanıcıların grid üzerinde kolayca veri okumasını ve yazmasını sağlar.

Hive meta store üstüne kuruludur ve Hive meta store tablo verilerini diğer veri işleme araçlarına sunar.

Processing Framework and Resource Management

Hive , sorguları yürütmek için dahili olarak bir MapReduce framework aracını aktif olarak kullanır .

MapReduce, büyük miktarda veriyi paralel olarak büyük ticari donanım kümeleri üzerinde işleyen uygulamaları yazmaya yönelik bir yazılım şablonudur.MapReduce işi, verileri map&reduce görevleri tarafından işlenen parçalara bölerek çalışır.

Distributed Storage

Hive, Hadoop’un üzerine inşa edilmiştir, dolayısıyla dağıtılmış depolama için temeldeki Hadoop Dağıtılmış Dosya Sistemini kullanır.

Şimdi Apache Hive ile verilerin nasıl işleneceğine bakalım.

Apache Hive Çalışma Aşamaları

1.executeQuery

Kullanıcı arayüzü, execute arayüzünü sürücüye çağırır.

2.getPlan

Driver sorguyu kabul eder, sorgu için bir session oluşturulur ve yürütme planını oluşturmak için sorguyu derleyiciye iletir.

3.getMetaData

Derleyici meta veri isteğini meta store tarafına gönderir.

4.sendMetaData

Metastore, meta verileri derleyiciye gönderir.

Derleyici bu meta verileri, sorgu ağacındaki ifadeler üzerinde tür denetimi ve anlamsal analiz gerçekleştirmek için kullanır.Derleyici daha sonra yürütme planını oluşturur (DAG).MapReduce işleri için plan,map operatör ağaçlarını ve reduce operatör ağacını içerir.

5.sendPlan

Derleyici daha sonra oluşturulan yürütme planını sürücüye gönderir.

6.ExecutePlan

Derleyiciden yürütme planını aldıktan sonra sürücü, yürütme planını, planı yürütmek için yürütme motoruna (execution engine) gönderir.

7.İş’in Map Reduce tarafına Gönderilmesi

Yürütme motoru daha sonra DAG’ın bu aşamalarını uygun bileşenlere gönderir.

Mapper veya reducer olsun her görev için, HDFS dosyalarından satırları okumak amacıyla bir tabloyla veya ara çıktıyla ilişkili seri durumdan çıkarıcı kullanılır.Bunlar daha sonra ilgili operatör ağacından geçirilir.

Çıktı oluşturulduktan sonra serileştirici aracılığıyla HDFS geçici dosyasına yazılır.Bu geçici HDFS dosyaları daha sonra planın sonraki map/reduce aşamalarına veri sağlamak için kullanılır.

DML işlemleri için son geçici dosya daha sonra tablonun konumuna taşınır.

8.sendResult

Artık sorgular için yürütme motoru, sürücüden gelen bir getirme çağrısının parçası olarak geçici dosyaların içeriğini doğrudan HDFS’den okuyor.Sürücü daha sonra sonuçları Hive arayüzüne gönderir.

Özet

Kısaca Apache Hive’ın açık kaynaklı bir veri ambarı aracı olduğunu söyleyerek özetleyebiliriz.Apache Hive’ın ana bileşenleri Hive clients, Hive services, processing framework ve resource management ve distribudet storage şeklindedir.

Kullanıcı, Hive sorguları göndererek kullanıcı arayüzü aracılığıyla Hive ile etkileşime girer.

Driver Hive sorgusunu derleyiciye iletir.Derleyici execution planını oluşturur.Execution Engine planı çalıştırır.

--

--