A következő architektúra elmagyarázza a lekérdezés Hive-be történő benyújtásának folyamatát.
Hive kliens
A Hive lehetővé teszi alkalmazások írását különböző nyelveken, beleértve a Java, Python és C++ nyelveket. Különféle típusú ügyfeleket támogat, mint például: -
- Thrift Server – Ez egy többnyelvű szolgáltatói platform, amely kiszolgálja az összes olyan programozási nyelv kérését, amely támogatja a Thriftet.
- JDBC illesztőprogram – A hive és a Java alkalmazások közötti kapcsolat létrehozására szolgál. A JDBC illesztőprogram az org.apache.hadoop.hive.jdbc.HiveDriver osztályban található.
- ODBC illesztőprogram – Lehetővé teszi, hogy az ODBC protokollt támogató alkalmazások csatlakozzanak a Hive-hoz.
Hive szolgáltatások
A Hive által nyújtott szolgáltatások a következők: -
- Hive CLI - A Hive CLI (Command Line Interface) egy shell, ahol Hive lekérdezéseket és parancsokat hajthatunk végre.
- Hive webes felhasználói felület – A Hive webes felhasználói felülete a Hive CLI alternatívája. Web alapú grafikus felhasználói felületet biztosít a Hive lekérdezések és parancsok végrehajtásához.
- Hive MetaStore - Ez egy központi adattár, amely a raktárban lévő különféle táblák és partíciók összes szerkezeti információját tárolja. Tartalmazza továbbá az oszlop metaadatait és típusinformációit, az adatok olvasására és írására használt szerializálókat és deszerializálókat, valamint a megfelelő HDFS fájlokat, ahol az adatokat tárolják.
- Hive Server – Apache Thrift Server néven hivatkoznak rá. Elfogadja a különböző ügyfelek kérését, és átadja a Hive Drivernek.
- Hive Driver – Lekérdezéseket fogad különböző forrásokból, például webes felhasználói felületről, CLI-ről, Thrift-ről és JDBC/ODBC-illesztőprogramról. A lekérdezéseket továbbítja a fordítónak.
- Hive Compiler – A fordító célja a lekérdezés elemzése és a különböző lekérdezési blokkok és kifejezések szemantikai elemzése. A HiveQL utasításokat MapReduce-feladatokká alakítja.
- Hive Execution Engine – Az optimalizáló létrehozza a logikai tervet DAG formájában a térképcsökkentési és HDFS-feladatokból. Végül a végrehajtó motor a beérkező feladatokat függőségi sorrendben hajtja végre.