Mikä on Hive? Architecture & Modes

⚡ Älykäs yhteenveto

Hive on Hadoop-ekosysteemin SQL-kerros, joka muuttaa HiveQL-lausekkeet hajautetuiksi töiksi, jotka lukevat HDFS:ssä jo olevaa strukturoitua dataa, jotta analyytikot voivat kysellä petatavutaulukoita kirjoittamatta itse MapReduce-koodia.

  • ???? Mitä se on: ETL- ja tietovarastointityökalu, joka lisää taulukoita, rivejä ja sarakkeita HDFS:ään tallennettujen tiedostojen päälle.
  • 🗂️ Metakauppa: Skeematiedot sijaitsevat relaatiometastoressa, jota tukee Derby yhdelle käyttäjälle ja MySQL jaettua pääsyä varten.
  • 🆚 RDBMS:ää vastaan: Hive validoi skeeman luettaessa, skaalautuu horisontaalisesti ja suosii laajoja skannauksia tietokannan käsittelemien rivitason päivitysten sijaan.
  • 🏗️ Kolme kerrosta: Asiakasohjelmat, palvelut ja tallennustila muodostavat arkkitehtuurin, ja ajuri koordinoi kääntäjää, metastoretta ja suoritusmoottoria.
  • 🔀 Kaksi tilaa: Paikallinen tila sopii yhdelle datasolmulle ja pienille tiedostoille, kun taas MapReduce-tila hajauttaa suorituksen usean solmun klusterille.
  • 🔌 HiveServer2: Thrift-pohjainen HS2-rajapinta lisää usean asiakkaan samanaikaisuuden ja todennuksen etäistuntoja varten.

Hive-arkkitehtuuri ja -tilat

Mikä on Hive?

Hive on ETL- ja tietovarastointityökalu, joka on kehitetty Hadoop Distributed File Systemin (HDFS) päälle. Hive helpottaa esimerkiksi seuraavien toimintojen suorittamista:

  • Tietojen kapselointi
  • Ad-hoc-kyselyt
  • Valtavien tietokokonaisuuksien analyysi

Hiven tärkeitä ominaisuuksia

Alla olevat kohdat selittävät, mikä erottaa Hiven tavallisesta MapReduce-ohjelmasta.

  • Hivessä taulukot ja tietokannat luodaan ensin ja sitten tiedot ladataan näihin taulukoihin.
  • Hive on tietovarasto, joka on suunniteltu hallitsemaan ja kyselemään vain taulukoihin tallennettua strukturoitua dataa.
  • Strukturoitua dataa käsitellessään MapReducella ei ole optimointi- ja käytettävyysominaisuuksia, kuten UDF:illä, mutta Hive-kehyksellä on. Kyselyoptimoinnilla tarkoitetaan kyselyiden tehokasta suorittamistapaa suorituskyvyn kannalta.
  • Hiven SQL-pohjainen ohjelmointikieli erottaa käyttäjän MapReduce-ohjelmoinnin monimutkaisuudesta. Se käyttää uudelleen relaatiotietokantamaailmasta tuttuja käsitteitä, kuten taulukoita, rivejä, sarakkeita ja skeemaa, helpottaen oppimista.
  • Hadoopin ohjelmointi toimii yksinkertaisilla tiedostoilla. Joten Hive voi käyttää hakemistorakenteita "osio" tietoja suorituskyvyn parantamiseksi tietyissä kyselyissä.
  • Tärkeä osa Hiveä on metastore, jota käytetään skeematietojen tallentamiseen. Tämä metastore sijaitsee tyypillisesti relaatiotietokannassa. Voimme olla vuorovaikutuksessa Hiven kanssa käyttämällä metodeja, kuten
    • Web-käyttöliittymä
    • Java Tietokantayhteys (JDBC) -liitäntä
  • Useimmat vuorovaikutukset tapahtuvat yleensä komentorivikäyttöliittymän (CLI) kautta. Hive tarjoaa komentorivikäyttöliittymän Hive-kyselyiden kirjoittamiseen Hive Query Language (HQL) -kielellä.
  • Yleensä HQL-syntaksi on samanlainen kuin SQL syntaksi, jonka useimmat data-analyytikot tuntevat. Alla oleva esimerkkikysely näyttää kaikki mainitussa taulukon nimessä olevat tietueet.
    • Esimerkkikysely : Valitse *
  • Hive tukee neljää tiedostomuotoa, jotka ovat TEXTFILE, SEQUENCEFILE, ORC ja RCFILE (Tallenna saraketiedosto).
  • Yhden käyttäjän metatietojen tallennukseen Hive käyttää Derby-tietokantaa ja usean käyttäjän tai jaetun metatiedon tallennukseen Hive käyttää MySQL.

Asettamista varten MySQL tietokannaksi ja metatietojen tallentamiseksi katso opastusvideo aiheesta Hive-metastoren konfigurointi MySQL, joka on jatkoa Hiven asennusopas.

Joitakin avainkohtia Hivesta:

  • Suurin ero HQL:n ja SQL:n välillä on se, että Hive-kysely suoritetaan Hadoopin infrastruktuurissa perinteisen tietokannan sijaan.
  • Hive-kyselyn suoritus on sarja automaattisesti luotuja MapReduce työpaikkaa.
  • Hive tukee osio- ja säilökonsepteja, jotka helpottavat datan hakemista asiakkaan suorittaessa kyselyn.
  • Hive tukee mukautettua UDF-funktiot (käyttäjän määrittämät funktiot) datan puhdistukseen, suodatukseen ja vastaaviin töihin. Ohjelmoijien vaatimusten mukaan voidaan määritellä Hive UDF:t.

Hive vs relaatiotietokannat

Hive suorittaa toimintoja, joihin relaatiotietokannat eivät pysty. Kun dataa on petatavujen kokoisia, tulosten palauttaminen sekunneissa on tärkeää, ja Hive tekee tämän tehokkaasti. Keskeiset erot ovat seuraavat.

Relaatiotietokannat ovat "kaava luettaessa ja kaava kirjoitettaessa": ensin luodaan taulukko, jonka jälkeen tiedot lisätään taulukkoon. Relaatiotietokannan taulukoissa voidaan suorittaa toimintoja, kuten lisäyksiä, päivityksiä ja muutoksia.

Pesä on "kaava vain luku -tilassa"Joten funktiot, kuten päivitys ja muokkaus, eivät toimineet varhaisissa julkaisuissa, koska Hive-kysely tyypillisessä klusterissa suoritetaan useiden DataNode-solmujen kautta, mikä teki mahdottomaksi päivittää ja muokata tietoja useiden solmujen välillä (Hive-versiot alle version 0.13).

Hive tukee myös "Lue monta, kirjoita kerran" malli, joten uudemmissa versioissa taulukkoa voidaan päivittää lisäyksen jälkeen.

HUOMAUTUS: Uudemmat Hive-versiot sisältävät päivitettyjä ominaisuuksia. Hive 0.14:ssä esiteltiin uusina ominaisuuksina UPDATE ja DELETE, ja myöhemmissä versioissa lisättiin täysi ACID-tapahtumien tuki.

Alla oleva taulukko tiivistää vertailun.

Aspect Relaatiotietokanta Apache Hive
Kaavion validointi Kirjoitettaessa Luettu
Tyypillinen datamäärä Gigatavuista teratavuiksi Teratavuista petatavuiksi
Työmäärä Rivitason OLTP lukee ja kirjoittaa Täysi skannaus eräanalytiikkaan
Kyselyn kieli SQL HQL, SQL-vaikutteinen murre
Teloitus Tietokantamoottori Hajautetut klusterityöt

Hive Archirakenne

Alla oleva kaavio selittää Apache Pesän arkkitehtuuri yksityiskohtaisesti.

Apache Hiven arkkitehtuurikaavio, joka näyttää asiakkaat, palvelut, tallennuksen ja laskennan

Pesä koostuu pääasiassa kolmesta ydinosasta:

  1. Hive-asiakkaat
  2. Mehiläispesäpalvelut
  3. Hive-tallennus ja laskenta

Hive asiakkaat

Hive tarjoaa erilaisia ​​ajureita erityyppisten sovellusten kanssa tapahtuvaan kommunikointiin. Thrift-pohjaisille sovelluksille se tarjoaa Thrift-asiakasohjelman kommunikointia varten.

varten Java Liittyville sovelluksille se tarjoaa JDBC-ajurit. Muille sovellustyypeille se tarjoaa ODBC-ajurit. Nämä asiakasohjelmat ja ajurit puolestaan ​​kommunikoivat Hive-palvelimen kanssa Hive-palveluissa.

Hive-palvelut

Asiakkaan ja Hiven vuorovaikutus tapahtuu Hive-palveluiden kautta. Jos asiakas haluaa suorittaa kyselyihin liittyviä toimintoja Hivessä, sen on kommunikoitava Hive-palveluiden kautta.

CLI toimii Hive-palveluna DDL-toiminnoissa. Kaikki ajurit kommunikoivat Hive-palvelimen ja Hive-palveluiden pääajurin kanssa, kuten yllä olevassa arkkitehtuurikaaviossa on esitetty.

Hive-palveluiden ajuri on pääajuri: se kommunikoi JDBC:n, ODBC:n ja muiden asiakaskohtaisten sovellusten kanssa ja välittää sitten niiden pyynnöt metastorelle ja tiedostojärjestelmään jatkokäsittelyä varten.

Hive varastointi ja tietojenkäsittely

Hive-palvelut, kuten metastore, tiedostojärjestelmä ja työasiakasohjelma, kommunikoivat puolestaan ​​Hive-tallennustilan kanssa ja suorittavat seuraavat toiminnot:

  • Hivessä luotujen taulukoiden metatiedot tallennetaan Hiveen. metastore-tietokanta.
  • Kyselytulokset ja taulukoihin ladatut tiedot tallennetaan Hadoop-klusteriin HDFS.

Työn suoritusvirta

Alla oleva kaavio tracyksi kysely käyttöliittymästä DataNodeille ja takaisin.

Hive-työn suoritusvuokaavio trackyselyn suorittaminen käyttöliittymästä DataNodeille

Yllä olevasta kaaviosta voimme ymmärtää Hive-työn suoritusvirran Hadoopin kanssa. Hive-tiedonsiirto toimii seuraavan kaavan mukaisesti.

  1. Kyselyn suorittaminen käyttöliittymästä
  2. Ajuri on vuorovaikutuksessa kääntäjän kanssa saadakseen suunnitelman. (Tässä suunnitelmalla tarkoitetaan kyselyn suoritusprosessia ja siihen liittyvää metatietotietojen keräämistä.)
  3. Kääntäjä luo suunnitelman suoritettavalle työlle. Kääntäjä kommunikoi metastoren kanssa saadakseen metatietopyynnön.
  4. Metastore lähettää metatietotiedot takaisin kääntäjälle
  5. Kääntäjä kommunikoi ajurin kanssa ehdotetusta suunnitelmasta kyselyn suorittamiseksi.
  6. Ohjain lähettää suoritussuunnitelmat suoritusmoottorille
  7. Suoritusmoottori (EE) toimii siltana Hiven ja Hadoopin välillä kyselyn käsittelyssä, mukaan lukien DFS-toiminnot:
    • EE ottaa ensin yhteyttä NameNode-solmuun ja sitten DataNode-solmuihin saadakseen taulukoihin tallennetut arvot.
    • EE hakee halutut tietueet DataNode-solmuista. Varsinainen taulukon data sijaitsee vain datasolmuissa; NameNode-solmusta se hakee vain kyselyn metatiedot.
    • Se kerää todellista dataa mainittuun kyselyyn liittyvistä datasolmuista
    • EE kommunikoi kaksisuuntaisesti metastoren kanssa suorittaakseen DDL (data definition language) -toimintoja, kuten LUO, PUDOTA ja MUUTA taulukoissa ja tietokannoissa. Metastore tallentaa vain tietokannan, taulukon ja sarakkeen nimet.
    • EE puolestaan ​​kommunikoi Hadoop-daemonien, kuten NameNode-, DataNode- ja job-solmujen, kanssa. tracker suorittaa kyselyn Hadoop-tiedostojärjestelmän päällä
  1. Tulosten hakeminen kuljettajalta
  2. Tulosten lähettäminen suoritusmoottorille. Kun tulokset on noudettu datasolmuilta EE:lle, se lähettää ne takaisin ajurille ja käyttöliittymään (käyttöliittymä).

Hive pysyy yhteydessä Hadoop-tiedostojärjestelmään ja sen daemoniin suoritusmoottorin kautta. Kaaviossa oleva katkoviiva osoittaa tämän kommunikaation.

Hiven eri tilat

Hive voi toimia kahdessa tilassa Hadoopin datasolmujen koosta riippuen. Nämä tilat ovat:

  • Paikallinen tila
  • MapReduce-tila

Milloin paikallista tilaa käytetään

  • Jos Hadoop on asennettu pseudohajautettuun tilaan yhdellä datasolmulla, käytämme Hiveä tässä tilassa.
  • Jos datan koko on niin pieni, että se voidaan rajoittaa yhteen paikalliseen koneeseen, voimme käyttää tätä tilaa
  • Paikallisessa koneessa olevien pienempien tietojoukkojen käsittely on erittäin nopeaa

Milloin MapReduce-tilaa käytetään

  • Jos Hadoopilla on useita datasolmuja ja data on hajautettu eri solmujen kesken, käytämme Hiveä tässä tilassa
  • Se suorittaa suuria tietomääriä ja kysely suoritetaan rinnakkain
  • Tämän tilan avulla voidaan saavuttaa suurempien tietojoukkojen käsittely tehokkaammin

Hivessä voimme asettaa ominaisuuden, joka määrittää, missä tilassa Hiven tulisi toimia. Oletusarvoisesti se toimii MapReduce-tilassa, ja paikallisessa tilassa voit käyttää seuraavaa asetusta:

SET mapred.job.tracker=local;

Hive-versiosta 0.7 eteenpäin se tukee tilaa, joka suorittaa MapReduce-töitä automaattisesti paikallisessa tilassa. Hive 4.x:ssä oletusmoottori on Apache Tez, joten tämä ominaisuus koskee vanhaa MapReduce-polkua.

Mikä on Hive Server2 (HS2)?

HiveServer2 (HS2) on palvelinrajapinta, joka suorittaa seuraavat toiminnot:

  • Mahdollistaa etäasiakkaiden suorittaa kyselyitä Hiveen
  • Hakee näiden kyselyiden tulokset

Nykyisissä versioissa on Thrift RPC:hen perustuvia edistyneitä ominaisuuksia, kuten:

  • Usean asiakkaan samanaikaisuus
  • Authentication

HS2 on Beelinen ja jokaisen JDBC- tai ODBC-istunnon takana, minkä vuoksi se korvasi yhden käyttäjän Hive-komentoliittymän. HiveQL-operaattorit ja sisäänrakennetut funktiot Viittaus on seuraava luonnollinen askel.

UKK

Hive on eräkyselykerros, joka skannaa suuria taulukoita hajautettujen töiden kautta. HBase on NoSQL-säilö, joka on rakennettu millisekuntien satunnaisia ​​lukuja ja kirjoituksia varten yksittäisille riveille. Ne ratkaisevat vastakkaiset käyttömallit ja toimivat usein rinnakkain.

Hive toimii MapReduce-, Apache Tez- tai Apache-alustoilla SparkMapReduce on vanhentunut ja Hive 4.x käyttää oletusarvoisesti Teziä, joka säilyttää välitulokset muistissa sen sijaan, että ne kirjoitettaisiin levylle vaiheiden välillä.

Hallittu taulukko antaa Hivelle metatietojen ja tiedostojen omistusoikeuden, joten pudotaping se poistaa tiedot tietovarastohakemistosta. Ulkoinen taulukko tallentaa vain metatiedot ja pudottaaping se jättää taustalla olevat tiedostot koskemattomiksi.

Opitut kustannusmallit syöttävät suoritustilastoja takaisin suunnittelijaan, jotta voidaan ennustaa skannausmäärää, liitosjärjestystä ja osioiden karsimista tarkemmin kuin staattiset arviot. Pilvialustat tuovat esiin samat signaalit kuin tiivistys- ja osioasettelusuositukset.

Copilot luonnostelee HiveQL-liitoksia, ikkunafunktioita ja Java UDF-runkoja kommentista, mikä lyhentää mallipohjaista työtä. Sarakkeiden nimet, osioavaimet ja tietotyypit on silti ensin tarkistettava varsinaista metastorea vasten.

Kyllä. Hive 0.14:ään lisättiin UPDATE- ja DELETE-toiminnot, ja myöhemmät versiot toivat täyden ACID-tuen transaktiotaulukoille. Hive 4.x laajentaa tätä Apache Iceberg -taulukoiden kautta tilannevedosten eristämisen ja skeemakehityksen avulla.

Kaikki kolme käyttävät SQL:ää samojen tiedostojen kautta. Hive suosii pitkiä erätöitä ja omistaa metastoren, jota muut lukevat. Spark SQL sopii sekoitetuille hakuprosesseille; Trino kohdistaa vuorovaikutteisia kyselyitä useista eri lähteistä.

Kyllä, pääasiassa Hive Metastoren kautta, joka on edelleen luettelostandardi. Spark, Trino, Presto ja Flink kaikki lukevat. Hive itse palvelee edelleen ajoitettuja erämuunnoksia ja varastokuormia.

Tiivistä tämä viesti seuraavasti: