Wat is Hive? Architectuur en modi
โก Slimme samenvatting
Hive is de SQL-laag van het Hadoop-ecosysteem. Het zet HiveQL-statements om in gedistribueerde taken die gestructureerde data lezen die al op HDFS staat, waardoor analisten petabyte-tabellen kunnen bevragen zonder zelf MapReduce-code te hoeven schrijven.

Wat is Hive?
Hive is een ETL- en datawarehouse-tool die is ontwikkeld bovenop het Hadoop Distributed File System (HDFS). Hive vereenvoudigt het uitvoeren van bewerkingen zoals
- Gegevens inkapseling
- Ad-hocvragen
- Analyse van enorme datasets
Belangrijke kenmerken van Hive
De onderstaande punten leggen uit wat Hive onderscheidt van een standaard MapReduce-programma.
- In Hive worden eerst tabellen en databases gemaakt en vervolgens worden gegevens in deze tabellen geladen.
- Hive is een datawarehouse dat is ontworpen voor het beheren en opvragen van uitsluitend gestructureerde gegevens die in tabellen zijn opgeslagen.
- Bij het verwerken van gestructureerde data beschikt MapReduce niet over optimalisatie- en gebruiksvriendelijkheidsfuncties zoals UDF's, maar het Hive-framework wel. Query-optimalisatie verwijst naar een efficiรซnte manier om een โโquery uit te voeren met het oog op prestaties.
- De op SQL geรฏnspireerde taal van Hive scheidt de gebruiker van de complexiteit van MapReduce-programmering. Het hergebruikt bekende concepten uit de wereld van relationele databases, zoals tabellen, rijen, kolommen en schema's, waardoor het gemakkelijk te leren is.
- Hadoop programmeert met platte bestanden. Hive kan dus gebruikmaken van directorystructuren om โscheidingโ Gegevens om de prestaties van bepaalde zoekopdrachten te verbeteren.
- Een belangrijk onderdeel van Hive is de metastore, die wordt gebruikt voor het opslaan van schema-informatie. Deze metastore bevindt zich doorgaans in een relationele database. We kunnen met Hive communiceren met behulp van methoden zoals
- Web GUI
- Java Database Connectivity (JDBC)-interface
- De meeste interacties vinden plaats via een commandoregelinterface (CLI). Hive biedt een CLI waarmee Hive-query's kunnen worden geschreven met behulp van Hive Query Language (HQL).
- Over het algemeen is de HQL-syntaxis vergelijkbaar met de SQL Syntaxis die de meeste data-analisten kennen. De onderstaande voorbeeldquery toont alle records in de genoemde tabel.
- Voorbeeldvraag : Selecteer uit
- Hive ondersteunt vier bestandsformaten, namelijk: TEXTFILE, SEQUENCEFILE, ORC en RCFILE (Kolombestand opnemen).
- Voor de opslag van metadata door รฉรฉn gebruiker gebruikt Hive de Derby-database, en voor metadata door meerdere gebruikers of gedeelde metadata gebruikt Hive een andere database. MySQL.
Voor het opzetten MySQL Raadpleeg de handleiding over het gebruik van de database en het opslaan van metadata-informatie. het configureren van de Hive-metastore met MySQL, wat volgt op de Installatiehandleiding voor Hive.
Enkele van de belangrijkste punten over Hive:
- Het belangrijkste verschil tussen HQL en SQL is dat een Hive-query wordt uitgevoerd op de infrastructuur van Hadoop in plaats van op een traditionele database.
- De uitvoering van een Hive-query is een reeks automatisch gegenereerde KaartVerminderen banen.
- Hive ondersteunt partitie- en bucketconcepten voor het eenvoudig ophalen van gegevens wanneer de client de query uitvoert.
- Hive ondersteunt aangepaste UDF's (door de gebruiker gedefinieerde functies) Voor het opschonen, filteren en soortgelijke taken van data. Afhankelijk van de eisen van de programmeurs kunnen Hive UDF's worden gedefinieerd.
Hive versus relationele databases
Hive voert functies uit die relationele databases niet kunnen. Wanneer de hoeveelheid data oploopt tot petabytes, is het cruciaal dat de resultaten binnen enkele seconden beschikbaar zijn, en Hive doet dit efficiรซnt. De belangrijkste verschillen zijn de volgende.
Relationele databases zijn van โschema bij lezen en schema bij schrijvenโEerst wordt een tabel aangemaakt, daarna worden er gegevens in die tabel ingevoegd. Op tabellen in een relationele database kunnen functies zoals invoegen, bijwerken en wijzigen worden uitgevoerd.
Hive is โschema alleen-lezenโFuncties zoals bijwerken en wijzigen werkten daarom niet in eerdere versies, omdat een Hive-query in een typisch cluster over meerdere DataNodes loopt, waardoor het onmogelijk was om gegevens over meerdere knooppunten bij te werken en te wijzigen (Hive-versies lager dan 0.13).
Hive ondersteunt ook de โLees veel, schrijf maar รฉรฉn keerโ patroon, zodat in recente versies een tabel na invoeging kan worden bijgewerkt.
NOTITIE: Nieuwere versies van Hive bevatten bijgewerkte functies. Hive 0.14 introduceerde UPDATE en DELETE als nieuwe functies, en latere releases voegden volledige ACID-transactieondersteuning toe.
De onderstaande tabel geeft een beknopt overzicht van de vergelijking.
| Aspect | Relationele database | Apache-bijenkorf |
|---|---|---|
| Schemavalidatie | Bij het schrijven | Na het lezen |
| Typisch gegevensvolume | Gigabytes tot terabytes | Terabytes tot petabytes |
| Werkdruk | OLTP-lees- en schrijfbewerkingen op rijniveau | Volledige batchanalyse |
| Zoektaal | SQL | HQL, een op SQL geรฏnspireerd dialect |
| Uitvoering | Database-engine | Gedistribueerde clustertaken |
Bijenkorf Architectuur
Het onderstaande diagram legt uit hoe apache De architectuur van de hive in detail.
Hive bestaat hoofdzakelijk uit 3 kernonderdelen:
- Hive-klanten
- Hive-diensten
- Hive-opslag en -computing
Hive-klanten
Hive biedt verschillende drivers voor communicatie met verschillende soorten applicaties. Voor Thrift-gebaseerde applicaties biedt het een Thrift-client voor communicatie.
Bij Java Voor gerelateerde applicaties biedt het JDBC-stuurprogramma's. Voor alle andere soorten applicaties biedt het ODBC-stuurprogramma's. Deze clients en stuurprogramma's communiceren op hun beurt met de Hive-server via de Hive-services.
Hive-diensten
De interactie tussen de client en Hive verloopt via Hive-services. Als de client een query-gerelateerde bewerking in Hive wil uitvoeren, moet deze communiceren via Hive-services.
De CLI fungeert als de Hive-service voor DDL-bewerkingen. Alle drivers communiceren met de Hive-server en de hoofddriver in de Hive-services, zoals weergegeven in het bovenstaande architectuurdiagram.
De driver in Hive-services is de belangrijkste component: deze communiceert met JDBC, ODBC en andere clientspecifieke applicaties, en stuurt hun verzoeken vervolgens door naar de metastore en het bestandssysteem voor verdere verwerking.
Hive-opslag en computergebruik
Hive-services zoals de metastore, het bestandssysteem en de jobclient communiceren op hun beurt met de Hive-opslag en voeren de volgende acties uit:
- Metagegevens over tabellen die in Hive zijn aangemaakt, worden in Hive opgeslagen. metastore-database.
- De queryresultaten en de gegevens die in de tabellen zijn geladen, worden opgeslagen in het Hadoop-cluster. HDFS.
Taakuitvoeringsproces
Het onderstaande diagram traces รฉรฉn query van de gebruikersinterface naar de DataNodes en terug.
Uit bovenstaand diagram kunnen we de workflow van de taakuitvoering in Hive met Hadoop afleiden. De gegevensstroom in Hive volgt het volgende patroon.
- Een query uitvoeren vanuit de gebruikersinterface (UI)
- De driver communiceert met de compiler om het uitvoeringsplan te verkrijgen. (Hier verwijst 'plan' naar het uitvoeringsproces van de query en het verzamelen van de bijbehorende metadata.)
- De compiler maakt het plan voor de uit te voeren taak. De compiler communiceert met de metastore om het metadataverzoek te ontvangen.
- De metastore stuurt metadata-informatie terug naar de compiler.
- De compiler communiceert met het stuurprogramma over het voorgestelde plan om de query uit te voeren.
- De driver stuurt uitvoeringsplannen naar de uitvoeringsengine.
- De uitvoeringsengine (EE) fungeert als een brug tussen Hive en Hadoop om de query te verwerken, inclusief DFS-bewerkingen:
- De EE neemt eerst contact op met de NameNode en vervolgens met de DataNodes om de waarden uit de tabellen op te halen.
- De EE haalt de gewenste records op van de DataNodes. De daadwerkelijke tabelgegevens bevinden zich alleen op de datanodes; van de NameNode haalt hij alleen de metadata voor de query op.
- Het verzamelt daadwerkelijke gegevens van de dataknooppunten die gerelateerd zijn aan de genoemde query.
- De EE communiceert bidirectioneel met de metastore om DDL-bewerkingen (data definition language) uit te voeren, zoals: CREรREN, LATEN VALLEN en WIJZIGEN De metastore slaat alleen database-, tabel- en kolomnamen op, met name voor tabellen en databases.
- De EE communiceert op zijn beurt met Hadoop-daemons zoals de NameNode, DataNodes en de job. tracker om de query uit te voeren bovenop het Hadoop-bestandssysteem
- Resultaten ophalen van de driver
- De resultaten worden naar de uitvoeringsengine verzonden. Zodra de resultaten van de dataknooppunten naar de EE zijn opgehaald, stuurt deze de resultaten terug naar de driver en de gebruikersinterface (front-end).
Hive onderhoudt contact met het Hadoop-bestandssysteem en de bijbehorende daemons via de uitvoeringsengine. De stippellijn in het diagram geeft deze communicatie weer.
Verschillende modi van Hive
Hive kan in twee modi werken, afhankelijk van de grootte van de dataknooppunten in Hadoop. Deze modi zijn:
- Lokale modus
- MapReduce-modus
Wanneer moet je de lokale modus gebruiken?
- Als Hadoop is geรฏnstalleerd in pseudo-gedistribueerde modus met รฉรฉn dataknooppunt, gebruiken we Hive in deze modus.
- Als de gegevensomvang klein genoeg is om beperkt te blijven tot รฉรฉn lokale machine, kunnen we deze modus gebruiken.
- De verwerking zal zeer snel zijn op kleinere datasets die aanwezig zijn op de lokale machine
Wanneer moet je de MapReduce-modus gebruiken?
- Als Hadoop meerdere dataknooppunten heeft en de data over de verschillende knooppunten is verdeeld, gebruiken we Hive in deze modus.
- Het verwerkt grote hoeveelheden data en de query wordt parallel uitgevoerd.
- Via deze modus kan verwerking van grote datasets met betere prestaties worden bereikt
In Hive kunnen we een eigenschap instellen om aan te geven in welke modus Hive moet werken. Standaard werkt het in MapReduce-modus, en voor de lokale modus kunt u de volgende instelling gebruiken:
SET mapred.job.tracker=local;
Vanaf Hive versie 0.7 is er een modus beschikbaar die MapReduce-taken automatisch lokaal uitvoert. In Hive 4.x is de standaard engine Apache Tez, dus deze eigenschap is van toepassing op het oude MapReduce-pad.
Wat is Hive Server2 (HS2)?
HiveServer2 (HS2) is een serverinterface die de volgende functies uitvoert:
- Hiermee kunnen externe clients query's uitvoeren op Hive
- Haalt de resultaten van die zoekopdrachten op.
De huidige versies voegen geavanceerde functies toe op basis van Thrift RPC, zoals:
- Gelijktijdigheid met meerdere clients
- authenticatie
HS2 bevindt zich achter Beeline en elke JDBC- of ODBC-sessie, en daarom heeft het de Hive CLI voor รฉรฉn gebruiker vervangen. HiveQL-operators en ingebouwde functies Referentie is de logische volgende stap.


