Următoarea arhitectură explică fluxul de trimitere a interogării în Hive.
Client Hive
Hive permite scrierea de aplicații în diferite limbi, inclusiv Java, Python și C++. Acceptă diferite tipuri de clienți, cum ar fi: -
- Thrift Server - Este o platformă de furnizor de servicii în mai multe limbi care servește cererile din toate acele limbaje de programare care acceptă Thrift.
- Driver JDBC - Este folosit pentru a stabili o conexiune între aplicațiile hive și Java. Driverul JDBC este prezent în clasa org.apache.hadoop.hive.jdbc.HiveDriver.
- Driver ODBC - Permite aplicațiilor care acceptă protocolul ODBC să se conecteze la Hive.
Servicii de stup
Următoarele sunt serviciile oferite de Hive: -
- Hive CLI - Hive CLI (Command Line Interface) este un shell în care putem executa interogări și comenzi Hive.
- Interfața utilizator Hive Web - Hive Web UI este doar o alternativă la Hive CLI. Acesta oferă o interfață grafică bazată pe web pentru executarea interogărilor și comenzilor Hive.
- Hive MetaStore - Este un depozit central care stochează toate informațiile de structură a diferitelor tabele și partiții din depozit. De asemenea, include metadatele coloanei și informațiile despre tipul acesteia, serializatoarele și deserializatoarele care sunt utilizate pentru a citi și scrie date și fișierele HDFS corespunzătoare în care sunt stocate datele.
- Server Hive - Se numește Apache Thrift Server. Acceptă cererea de la diferiți clienți și o furnizează lui Hive Driver.
- Driver Hive - Primește interogări din diferite surse, cum ar fi UI web, CLI, Thrift și driverul JDBC/ODBC. Transferă interogările către compilator.
- Hive Compiler - Scopul compilatorului este de a analiza interogarea și de a efectua analize semantice asupra diferitelor blocuri și expresii de interogare. Acesta convertește instrucțiunile HiveQL în joburi MapReduce.
- Hive Execution Engine - Optimizer generează planul logic sub formă de DAG al sarcinilor de reducere a hărții și sarcinilor HDFS. În cele din urmă, motorul de execuție execută sarcinile primite în ordinea dependențelor acestora.