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.
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.
Pesä koostuu pääasiassa kolmesta ydinosasta:
- Hive-asiakkaat
- Mehiläispesäpalvelut
- 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.
Yllä olevasta kaaviosta voimme ymmärtää Hive-työn suoritusvirran Hadoopin kanssa. Hive-tiedonsiirto toimii seuraavan kaavan mukaisesti.
- Kyselyn suorittaminen käyttöliittymästä
- Ajuri on vuorovaikutuksessa kääntäjän kanssa saadakseen suunnitelman. (Tässä suunnitelmalla tarkoitetaan kyselyn suoritusprosessia ja siihen liittyvää metatietotietojen keräämistä.)
- Kääntäjä luo suunnitelman suoritettavalle työlle. Kääntäjä kommunikoi metastoren kanssa saadakseen metatietopyynnön.
- Metastore lähettää metatietotiedot takaisin kääntäjälle
- Kääntäjä kommunikoi ajurin kanssa ehdotetusta suunnitelmasta kyselyn suorittamiseksi.
- Ohjain lähettää suoritussuunnitelmat suoritusmoottorille
- 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ä
- Tulosten hakeminen kuljettajalta
- 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.



