Aşağıdaki mimari, sorgunun Hive'a gönderim akışını açıklamaktadır.
Hive İstemcisi
Hive, Java, Python ve C++ dahil olmak üzere çeşitli dillerde uygulama yazmaya olanak tanır. Aşağıdakiler gibi farklı istemci türlerini destekler: -
- Thrift Sunucusu - Thrift'i destekleyen tüm programlama dillerinden gelen istekleri karşılayan, diller arası bir servis sağlayıcı platformudur.
- JDBC Sürücüsü - Hive ve Java uygulamaları arasında bağlantı kurmak için kullanılır. JDBC Sürücüsü org.Apache.hadoop.hive.jdbc.HiveDriver sınıfında mevcuttur.
- ODBC Sürücüsü - ODBC protokolünü destekleyen uygulamaların Hive'a bağlanmasını sağlar.
Kovan Hizmetleri
Hive tarafından sağlanan hizmetler şunlardır: -
- Hive CLI - Hive CLI (Komut Satırı Arayüzü), Hive sorgularını ve komutlarını yürütebildiğimiz bir kabuktur.
- Hive Web Kullanıcı Arayüzü - Hive Web Kullanıcı Arayüzü, Hive CLI'nin yalnızca bir alternatifidir. Hive sorgularını ve komutlarını yürütmek için web tabanlı bir GUI sağlar.
- Hive MetaStore - Depodaki çeşitli tablo ve bölümlerin tüm yapı bilgilerinin saklandığı merkezi bir depodur. Ayrıca sütunun meta verilerini ve tür bilgilerini, verileri okumak ve yazmak için kullanılan seri hale getiricileri ve seri durumdan çıkarıcıları ve verilerin depolandığı ilgili HDFS dosyalarını içerir.
- Hive Sunucusu – Apache Thrift Sunucusu olarak anılır. Farklı istemcilerden gelen isteği kabul eder ve bunu Hive Driver'a sunar.
- Hive Driver - Web kullanıcı arayüzü, CLI, Thrift ve JDBC/ODBC sürücüsü gibi farklı kaynaklardan sorgular alır. Sorguları derleyiciye aktarır.
- Hive Derleyici - Derleyicinin amacı sorguyu ayrıştırmak ve farklı sorgu blokları ve ifadeleri üzerinde anlamsal analiz gerçekleştirmektir. HiveQL ifadelerini MapReduce işlerine dönüştürür.
- Hive Execution Engine - Optimizer, harita azaltma görevleri ve HDFS görevlerinin DAG biçiminde mantıksal planını oluşturur. Sonunda, yürütme motoru gelen görevleri bağımlılık sırasına göre yürütür.