Apache Hive vs Apache Impala: galvenās atšķirības

Ja esat iesācējs lielo datu analīzē, jūsu radars var būt apache rīku resurss; tomēr dažādie rīki var kļūt mulsinoši un dažkārt milzīgi.

Šī ziņa atrisinās šo neskaidrību un paskaidros, kas ir Apache Hive un Impala un ar ko tie atšķiras viens no otra!

Apache strops

Apache Hive ir SQL datu piekļuves saskarne Apache Hadoop platformai. Hive ļauj vaicāt, apkopot un analizēt datus, izmantojot SQL sintaksi.

Datiem HDFS failu sistēmā tiek izmantota lasīšanas piekļuves shēma, kas ļauj apstrādāt datus kā parastu tabulu vai relāciju DBVS. HiveQL vaicājumi tiek tulkoti Java kodā MapReduce darbiem.

Hive vaicājumi ir rakstīti HiveQL vaicājumu valodā, kuras pamatā ir SQL valoda, bet tai nav pilnīga SQL-92 standarta atbalsta.

Tomēr šī valoda ļauj programmētājiem izmantot savus vaicājumus, kad ir neērti vai neefektīvi izmantot HiveQL līdzekļus. HiveQL var paplašināt ar lietotāja definētām skalārām funkcijām (UDF), apkopojumiem (UDAF kodiem) un tabulu funkcijām (UDTF).

Kā darbojas Apache Hive

Apache Hive tulko programmas, kas rakstītas HiveQL valodā (tuvu SQL) vienā vai vairākos MapReduce, Apache Tez vai Apache Spark uzdevumos. Šīs ir trīs izpildes programmas, kuras var palaist vietnē Hadoop. Pēc tam Apache Hive sakārto datus masīvā Hadoop izplatītās failu sistēmas (HDFS) failam, lai palaistu uzdevumus klasterī un radītu atbildi.

Apache Hive tabulas ir līdzīgas relāciju datu bāzēm, un datu vienības tiek sakārtotas no nozīmīgākās vienības līdz visprecīzākajai. Datu bāzes ir masīvi, kas sastāv no nodalījumiem, kurus atkal var sadalīt “spapos”.

Dati ir pieejami, izmantojot HiveQL. Katrā datu bāzē dati ir numurēti, un katra tabula atbilst HDFS direktorijam.

Apache Hive arhitektūrā ir pieejamas vairākas saskarnes, piemēram, tīmekļa saskarne, CLI vai ārējie klienti.

Patiešām, “Apache Hive Thrift” serveris ļauj attāliem klientiem iesniegt komandas un pieprasījumus Apache Hive, izmantojot dažādas programmēšanas valodas. Apache Hive centrālais direktorijs ir “metastore”, kurā ir visa informācija.

Dzinēju, kas liek Hive darboties, sauc par „vadītāju”. Tas apvieno kompilatoru un optimizētāju, lai noteiktu optimālo izpildes plānu.

Visbeidzot, drošību nodrošina Hadoop. Tāpēc tā paļaujas uz Kerberos savstarpējai autentifikācijai starp klientu un serveri. Atļauju jaunizveidotajiem failiem Apache Hive nosaka HDFS, kas ļauj veikt lietotāja, grupas vai citas autorizācijas.

Hive iezīmes

  • Atbalsta gan Hadoop, gan Spark skaitļošanas dzinēju
  • Izmanto HDFS un darbojas kā datu noliktava.
  • Izmanto MapReduce un atbalsta ETL
  • HDFS dēļ tam ir līdzīga kļūdu tolerance kā Hadoop
  Vai nevarat izdzēst lietotnes iPhone vai iPad ierīcē? 10 veidi, kā novērst problēmu

Apache Hive: priekšrocības

Apache Hive ir ideāls risinājums vaicājumiem un datu analīzei. Tas dod iespēju gūt kvalitatīvu ieskatu, nodrošinot konkurences priekšrocības un veicinot atsaucību uz tirgus pieprasījumu.

Starp galvenajām Apache Hive priekšrocībām var minēt lietošanas vienkāršību, kas saistīta ar tā “SQL draudzīgo” valodu. Turklāt tas paātrina sākotnējo datu ievietošanu, jo dati nav jālasa vai jānumurē no diska iekšējā datu bāzes formātā.

Zinot, ka dati tiek glabāti HDFS, Apache Hive ir iespējams saglabāt lielas datu kopas līdz pat simtiem petabaitiem. Šis risinājums ir daudz vairāk mērogojams nekā tradicionālā datu bāze. Zinot, ka tas ir mākoņpakalpojums, Apache Hive ļauj lietotājiem ātri palaist virtuālos serverus, pamatojoties uz darba slodzes (ti, uzdevumu) svārstībām.

Drošība ir arī aspekts, kurā Hive darbojas labāk, jo problēmas gadījumā tā spēj atkārtot atkopšanai kritiskās darba slodzes. Visbeidzot, darba jauda ir nepārspējama, jo tā var izpildīt līdz 100 000 pieprasījumu stundā.

Apache Impala

Apache Impala ir masveidā paralēls SQL vaicājumu dzinējs, kas paredzēts SQL vaicājumu interaktīvai izpildei datiem, kas glabājas Apache Hadoop, rakstīti C++ valodā un izplatīti saskaņā ar Apache 2.0 licenci.

Impala tiek saukta arī par MPP (Massively Parallel Processing) dzinēju, izplatītu DBVS un pat SQL-on-Hadoop steka datu bāzi.

Impala darbojas sadalītā režīmā, kur procesa gadījumi darbojas dažādos klasteru mezglos, saņemot, plānojot un koordinējot klientu pieprasījumus. Šajā gadījumā ir iespējama SQL vaicājuma fragmentu paralēla izpilde.

Klienti ir lietotāji un lietojumprogrammas, kas sūta SQL vaicājumus pret datiem, kas glabājas Apache Hadoop (HBase un HDFS) vai Amazon S3. Mijiedarbība ar Impala notiek, izmantojot HUE (Hadoop User Experience) tīmekļa saskarni, ODBC, JDBC un Impala Shell komandrindas apvalku.

Impala infrastruktūra ir atkarīga no cita populāra SQL-on-Hadoop rīka Apache Hive, kas izmanto savu metadatu krātuvi. Jo īpaši Hive Metastore ļauj Impala uzzināt par datu bāzu pieejamību un struktūru.

Veidojot, modificējot un dzēšot shēmas objektus vai ielādējot datus tabulās, izmantojot SQL priekšrakstus, atbilstošās metadatu izmaiņas tiek automātiski izplatītas uz visiem Impala mezgliem, izmantojot specializētu direktoriju pakalpojumu.

Impala galvenie komponenti ir šādi izpildāmie faili:

  • Impalad vai Impala dēmons ir sistēmas pakalpojums, kas plāno un izpilda HDFS, HBase un Amazon S3 datu vaicājumus. Katrā klastera mezglā darbojas viens impalad process.
  • Statestore ir nosaukumu pakalpojums, kas seko visu klastera impalad instanču atrašanās vietai un statusam. Viens šī sistēmas pakalpojuma gadījums darbojas katrā mezglā un galvenajā serverī (Name Node).
  • Katalogs ir metadatu koordinācijas pakalpojums, kas izplata izmaiņas no Impala DDL un DML priekšrakstiem uz visiem ietekmētajiem Impala mezgliem, lai jaunas tabulas vai tikko ielādēti dati būtu uzreiz redzami jebkuram klastera mezglam. Ieteicams, lai viens Kataloga gadījums darbotos tajā pašā klastera resursdatorā, kurā darbojas Statestored dēmons.
  Kā Indijā bez maksas skatīties TATA IPL 2022

Kā darbojas Apache Impala

Impala, tāpat kā Apache Hive, SQL vietā izmanto līdzīgu deklaratīvo vaicājumu valodu Hive Query Language (HiveQL), kas ir SQL92 apakškopa.

Faktiskā pieprasījuma izpilde Impalā ir šāda:

Klienta lietojumprogramma nosūta SQL vaicājumu, izveidojot savienojumu ar jebkuru impaladu, izmantojot standartizētas ODBC vai JDBC draivera saskarnes. Pievienotais impalads kļūst par pašreizējā pieprasījuma koordinatoru.

SQL vaicājums tiek analizēts, lai noteiktu uzdevumus impalad gadījumiem klasterī; pēc tam tiek izveidots optimālais vaicājuma izpildes plāns.

Impalad tieši piekļūst HDFS un HBase, izmantojot lokālos sistēmas pakalpojumu gadījumus, lai nodrošinātu datus. Atšķirībā no Apache Hive šāda tieša mijiedarbība ievērojami ietaupa vaicājuma izpildes laiku, jo starprezultāti netiek saglabāti.

Atbildot uz to, katrs dēmons atgriež datus koordinējošajam impaladam, nosūtot rezultātus atpakaļ klientam.

Impala iezīmes

  • Atbalsts reāllaika apstrādei atmiņā
  • SQL draudzīgs
  • Atbalsta uzglabāšanas sistēmas, piemēram, HDFS, Apache HBase un Amazon S3
  • Atbalsta integrāciju ar tādiem BI rīkiem kā Pentaho un Tableau
  • Izmanto HiveQL sintaksi

Apache Impala: priekšrocības

Impala izvairās no iespējamas startēšanas, jo visi sistēmas dēmonu procesi tiek palaisti tieši sāknēšanas laikā. Tas ievērojami ietaupa vaicājuma izpildes laiku. Papildu Impala ātruma palielinājums ir tāpēc, ka šis Hadoop SQL rīks atšķirībā no Hive nesaglabā starprezultātus un tieši piekļūst HDFS vai HBase.

Turklāt Impala ģenerē programmas kodu izpildes laikā, nevis kompilācijas laikā, kā to dara Hive. Tomēr Impala ātrgaitas veiktspējas blakusparādība ir samazināta uzticamība.

Jo īpaši, ja datu mezgls SQL vaicājuma izpildes laikā pazūd, Impala instance tiks restartēta, un Hive turpinās uzturēt savienojumu ar datu avotu, nodrošinot kļūdu toleranci.

Citas Impala priekšrocības ietver iebūvētu atbalstu drošam tīkla autentifikācijas protokolam Kerberos, prioritāšu noteikšanu un spēju pārvaldīt pieprasījumu rindu un atbalstu populāriem Big Data formātiem, piemēram, LZO, Avro, RCFile, Parquet un Sequence.

Hive vs Impala: līdzības

Hive un Impala tiek brīvi izplatīti saskaņā ar Apache Software Foundation licenci, un tie attiecas uz SQL rīkiem darbam ar Hadoop klasterī saglabātajiem datiem. Turklāt viņi izmanto arī HDFS izplatīto failu sistēmu.

Impala un Hive īsteno dažādus uzdevumus, koncentrējoties uz Apache Hadoop klasterī saglabāto lielo datu SQL apstrādi. Impala nodrošina SQL līdzīgu saskarni, kas ļauj lasīt un rakstīt Hive tabulas, tādējādi nodrošinot ērtu datu apmaiņu.

Tajā pašā laikā Impala padara SQL operācijas Hadoop diezgan ātras un efektīvas, ļaujot izmantot šo DBVS lielo datu analītikas pētniecības projektos. Kad vien iespējams, Impala strādā ar esošu Apache Hive infrastruktūru, kas jau tiek izmantota, lai izpildītu ilgstošus SQL pakešu vaicājumus.

  Kas ir LAP? Ievada rokasgrāmata

Arī Impala savas tabulu definīcijas glabā metastorā, tradicionālajā MySQL vai PostgreSQL datu bāzē, ti, tajā pašā vietā, kur Hive glabā līdzīgus datus. Tas ļauj Impalai piekļūt Hive tabulām, ja visas kolonnas izmanto Impala atbalstītos datu tipus, failu formātus un kompresijas kodekus.

Strops vs Impala: atšķirības

Programmēšanas valoda

Hive ir rakstīts Java, savukārt Impala ir rakstīts C++. Tomēr Impala izmanto arī dažus Java bāzes Hive UDF.

Lietošanas gadījumi

Datu inženieri izmanto Hive ETL procesos (Extract, Transform, Load), piemēram, ilgstošiem pakešu darbiem lielās datu kopās, piemēram, ceļojumu apkopotājos un lidostu informācijas sistēmās. Savukārt Impala ir paredzēta galvenokārt analītiķiem un datu zinātniekiem, un to galvenokārt izmanto tādos uzdevumos kā biznesa inteliģence.

Performance

Impala izpilda SQL vaicājumus reāllaikā, savukārt Hive raksturo zems datu apstrādes ātrums. Izmantojot vienkāršus SQL vaicājumus, Impala var darboties 6–69 reizes ātrāk nekā Hive. Tomēr Hive labāk apstrādā sarežģītus vaicājumus.

Latentums/caurlaidība

Hive caurlaidspēja ir ievērojami augstāka nekā Impala. Funkcija LLAP (Live Long and Process), kas ļauj saglabāt vaicājumu kešatmiņu atmiņā, nodrošina Hive labu zema līmeņa veiktspēju.

LLAP ietver ilgtermiņa sistēmas pakalpojumus (dēmonus), kas ļauj tieši mijiedarboties ar HDFS datu mezgliem un aizstāt cieši integrēto DAG vaicājumu struktūru (Directed acyclic graph) – grafu modeli, ko aktīvi izmanto Big Data skaitļošanā.

Kļūdu tolerance

Hive ir kļūmēm izturīga sistēma, kas saglabā visus starprezultātus. Tas arī pozitīvi ietekmē mērogojamību, bet samazina datu apstrādes ātrumu. Savukārt Impala nevar saukt par kļūdu izturīgu platformu, jo tai ir vairāk atmiņas.

Koda konvertēšana

Hive ģenerē vaicājuma izteiksmes kompilēšanas laikā, bet Impala tās ģenerē izpildes laikā. Stropu raksturo “aukstās palaišanas” problēma, pirmo reizi palaižot lietojumprogrammu; vaicājumi tiek pārveidoti lēni, jo ir jāizveido savienojums ar datu avotu.

Impalai nav šāda veida startēšanas. SQL vaicājumu apstrādei nepieciešamie sistēmas pakalpojumi (dēmoni) tiek palaisti sāknēšanas laikā, kas paātrina darbu.

Uzglabāšanas atbalsts

Impala atbalsta LZO, Avro un Parquet formātus, savukārt Hive darbojas ar vienkāršu tekstu un ORC. Tomēr abi atbalsta formātus RCFIle un Sequence.

Apache HiveApache ImpalaLanguage JavaC++ izmantošanas gadījumiDatu inženierijaAnalīze un analītikaVeiktspējaAugsta vienkāršiem vaicājumiem Salīdzinoši zems latentumsLielāks latentums kešatmiņas dēļMazāk latentā kļūdu toleranceLielāka, pateicoties MapReduceMazāk tolerants, ClLain tolerants, jo MPCkonversijas dēļ,ClOtmazāk pārveidošanā, un CLPlainatbalstsAukstuma pārvēršanas dēļ

Nobeiguma vārdi

Hive un Impala nekonkurē, bet gan efektīvi papildina viens otru. Lai gan starp abiem ir būtiskas atšķirības, ir arī diezgan daudz kopīga, un viena no otras izvēle ir atkarīga no datiem un konkrētajām projekta prasībām.

Varat arī izpētīt Hadoop un Spark tiešus salīdzinājumus.

.