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 het is: Een ETL- en datawarehouse-tool die tabellen, rijen en kolommen toevoegt aan bestanden die zijn opgeslagen in HDFS.
  • ๐Ÿ—‚๏ธ Metastore: Schema-informatie bevindt zich in een relationele metastore, ondersteund door Derby voor รฉรฉn gebruiker en door MySQL voor gedeelde toegang.
  • ๐Ÿ†š Tegen een RDBMS: Hive valideert het schema tijdens het lezen, schaalt horizontaal en geeft de voorkeur aan grote scans boven de rij-niveau-updates die een database aankan.
  • ???? ๏ธ Drie lagen: Clients, services en opslag vormen de architectuur, waarbij de driver de compiler, metastore en uitvoeringsengine coรถrdineert.
  • ๐Ÿ”€ Twee modi: De lokale modus is geschikt voor รฉรฉn dataknooppunt en kleine bestanden, terwijl de MapReduce-modus de uitvoering verdeelt over een cluster met meerdere knooppunten.
  • ???? HiveServer2: De op Thrift gebaseerde HS2-interface voegt gelijktijdige toegang voor meerdere clients en authenticatie voor externe sessies toe.

Hive-architectuur en -modi

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.

Architectuurdiagram van Apache Hive met weergave van clients, services, opslag en rekenkracht.

Hive bestaat hoofdzakelijk uit 3 kernonderdelen:

  1. Hive-klanten
  2. Hive-diensten
  3. 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.

Stroomdiagram voor de uitvoering van Hive-taken traceen query vanuit de gebruikersinterface naar de DataNodes sturen

Uit bovenstaand diagram kunnen we de workflow van de taakuitvoering in Hive met Hadoop afleiden. De gegevensstroom in Hive volgt het volgende patroon.

  1. Een query uitvoeren vanuit de gebruikersinterface (UI)
  2. 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.)
  3. De compiler maakt het plan voor de uit te voeren taak. De compiler communiceert met de metastore om het metadataverzoek te ontvangen.
  4. De metastore stuurt metadata-informatie terug naar de compiler.
  5. De compiler communiceert met het stuurprogramma over het voorgestelde plan om de query uit te voeren.
  6. De driver stuurt uitvoeringsplannen naar de uitvoeringsengine.
  7. 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
  1. Resultaten ophalen van de driver
  2. 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.

Veelgestelde vragen

Hive is een batchquerylaag die grote tabellen scant via gedistribueerde taken. HBase is een NoSQL-database die is ontworpen voor willekeurige lees- en schrijfbewerkingen op afzonderlijke rijen in milliseconden. Ze lossen tegenovergestelde toegangspatronen op en worden vaak naast elkaar gebruikt.

Hive draait op MapReduce, Apache Tez of Apache. SparkMapReduce is verouderd en Hive 4.x gebruikt standaard Tez, dat tussentijdse resultaten in het geheugen bewaart in plaats van ze tussen de fasen naar de schijf te schrijven.

Een beheerde tabel geeft Hive het eigendom van metadata en bestanden, dus verwijder deze.ping Het verwijdert de gegevens uit de datawarehouse-directory. Een externe tabel slaat alleen metadata op en verwijdert deze.ping De onderliggende bestanden blijven ongewijzigd.

Op basis van geleerde kostenmodellen worden uitvoeringsstatistieken teruggekoppeld naar de planner om het scanvolume, de joinvolgorde en het opschonen van partities nauwkeuriger te voorspellen dan met statische schattingen. Cloudplatforms geven dezelfde signalen weer als aanbevelingen voor compactie en partitie-indeling.

Copilot ontwikkelt HiveQL-joins, vensterfuncties en Java UDF-sjablonen uit een opmerking, wat de hoeveelheid standaardcode vermindert. Kolomnamen, partitiesleutels en gegevenstypen moeten echter nog eerst worden gecontroleerd aan de hand van de daadwerkelijke metastore.

Ja. Hive 0.14 voegde UPDATE en DELETE toe, en latere releases boden volledige ACID-ondersteuning voor transactionele tabellen. Hive 4.x breidt dit uit met Apache Iceberg-tabellen met snapshot-isolatie en schema-evolutie.

Alle drie bieden SQL-query's aan op dezelfde bestanden. Hive is bij uitstek geschikt voor lange batchtaken en beheert de metastore die de andere frameworks gebruiken. Spark SQL is geschikt voor gemengde pipelines; Trino is gericht op interactieve query's over meerdere bronnen.

Ja, grotendeels via de Hive Metastore, die nog steeds de catalogusstandaard is. SparkTrino, Presto en Flink kunnen allemaal lezen. Hive zelf verzorgt nog steeds geplande batchtransformaties en data-invoer in het datawarehouse.

Vat dit bericht samen met: