Ce este Hive? Architectură și moduri

Ce este Hive?

Hive este un instrument ETL și de depozitare a datelor dezvoltat pe lângă Hadoop Distributed File System (HDFS). Hive ușurează munca pentru efectuarea de operațiuni precum

  • Încapsularea datelor
  • Interogări ad-hoc
  • Analiza seturi de date uriașe

Caracteristici importante ale Stupului

  • În Hive, tabelele și bazele de date sunt create mai întâi și apoi datele sunt încărcate în aceste tabele.
  • Hive ca depozit de date conceput pentru gestionarea și interogarea numai a datelor structurate care sunt stocate în tabele.
  • În timp ce se ocupă de date structurate, Map Reduce nu are funcții de optimizare și de utilizare precum UDF-urile, dar cadrul Hive are. Optimizarea interogărilor se referă la o modalitate eficientă de execuție a interogărilor din punct de vedere al performanței.
  • Limbajul inspirat de SQL al lui Hive separă utilizatorul de complexitatea programării Map Reduce. Reutiliza concepte familiare din lumea bazelor de date relaționale, cum ar fi tabelele, rândurile, coloanele și schema etc. pentru ușurința învățării.
  • Programarea lui Hadoop funcționează pe fișiere plate. Deci, Hive poate folosi structuri de directoare pentru a „partiționa” datele pentru a îmbunătăți performanța la anumite interogări.
  • O componentă nouă și importantă a Hive, adică Metastore, folosită pentru stocarea informațiilor despre schemă. Acest Metastore rezidă de obicei într-o bază de date relațională. Putem interacționa cu Hive folosind metode precum
    • GUI Web
    • Java Interfață de conectare la baze de date (JDBC).
  • Cele mai multe interacțiuni tind să aibă loc printr-o interfață de linie de comandă (CLI). Hive oferă un CLI pentru a scrie interogări Hive folosind Hive Query Language (HQL)
  • În general, sintaxa HQL este similară cu SQL sintaxă cu care sunt familiarizați majoritatea analiștilor de date. Interogarea eșantion de mai jos afișează toate înregistrările prezente în numele tabelului menționat.
    • Exemplu de interogare : Alege din
  • Hive acceptă patru formate de fișiere TEXTFILE, SEQUENCEFILE, ORC și RCFILE (Înregistrare Fișier Columnar).
  • Pentru stocarea metadatelor cu un singur utilizator, Hive folosește baza de date derby și pentru metadatele cu mai mulți utilizatori sau cazul metadatelor partajate Hive utilizează MYSQL.

Pentru configurare MySQL ca bază de date și pentru a stoca informațiile despre metadate verifica Tutorial „Instalarea și configurarea HIVE și MYSQL”

Câteva dintre punctele cheie despre Hive:

  • Diferența majoră dintre HQL și SQL este că interogarea Hive se execută mai degrabă pe infrastructura Hadoop decât pe baza de date tradițională.
  • Execuția interogării Hive va fi ca o serie de joburi de reducere a hărților generate automat.
  • Hive acceptă concepte de partiție și găleți pentru recuperarea ușoară a datelor atunci când clientul execută interogarea.
  • Hive acceptă UDF-uri (User Defined Functions) specifice personalizate pentru curățarea datelor, filtrarea, etc. În funcție de cerințele programatorilor se pot defini UDF-uri Hive.

Hive vs baze de date relaționale

Folosind Hive, putem realiza anumite funcționalități deosebite care nu sunt realizate în bazele de date relaționale. Pentru o cantitate imensă de date care se află în peta-octeți, interogarea acesteia și obținerea de rezultate în câteva secunde este importantă. Și Hive face acest lucru destul de eficient, procesează interogările rapid și produce rezultate în câteva secunde.

Să vedem acum ce face Hive atât de rapid.

Unele diferențe cheie între Hive și bazele de date relaționale sunt următoarele;

Bazele de date relaționale sunt de „Schema pe READ și Schema pe Write„. Mai întâi creați un tabel, apoi introduceți date în tabelul respectiv. Pe tabelele de baze de date relaționale, pot fi efectuate funcții precum inserții, actualizări și modificări.

Stupul este „Schema numai pe READ„. Deci, funcții precum actualizarea, modificările etc. nu funcționează cu aceasta. Deoarece interogarea Hive dintr-un cluster tipic rulează pe mai multe noduri de date. Prin urmare, nu este posibilă actualizarea și modificarea datelor pe mai multe noduri. (versiunile Hive sub 0.13)

De asemenea, Hive susține „CITEȘTE Mulți SCRIE O dată" model. Ceea ce înseamnă că după inserarea tabelului putem actualiza tabelul în cele mai recente versiuni Hive.

NOTĂ: Cu toate acestea, noua versiune de Hive vine cu funcții actualizate. Versiunile Hive (Hive 0.14) oferă opțiuni de actualizare și ștergere ca funcții noi

Stup Architectură

Stup Architectură

Captura de ecran de mai sus explică Apache Arhitectura stupului în detaliu

Stupul constă în principal din 3 părți de bază

  1. Clienții Hive
  2. Servicii de stup
  3. Stocare și calcul Hive

Clienți Hive:

Hive oferă drivere diferite pentru comunicarea cu un tip diferit de aplicații. Pentru aplicațiile bazate pe Thrift, acesta va oferi clientului Thrift pentru comunicare.

Pentru Java aplicații conexe, oferă drivere JDBC. În afară de orice tip de aplicații, au furnizat drivere ODBC. Acești clienți și drivere comunică, la rândul lor, din nou cu serverul Hive în serviciile Hive.

Servicii Hive:

Interacțiunile clientului cu Hive pot fi efectuate prin intermediul serviciilor Hive. Dacă clientul dorește să efectueze orice operațiuni legate de interogare în Hive, trebuie să comunice prin intermediul Hive Services.

CLI este interfața de linie de comandă care acționează ca serviciu Hive pentru operațiunile DDL (Data definition Language). Toți driverele comunică cu serverul Hive și cu driverul principal din serviciile Hive, așa cum se arată în diagrama arhitecturii de mai sus.

Driverul prezent în serviciile Hive reprezintă driverul principal și comunică toate tipurile de JDBC, ODBC și alte aplicații specifice clientului. Driverul va procesa acele solicitări din diferite aplicații către metamagazin și sisteme de teren pentru procesare ulterioară.

Stocare și calcul Hive:

Serviciile Hive, cum ar fi Meta store, File system și Job Client, la rândul lor comunică cu Hive Storage și efectuează următoarele acțiuni

  • Informațiile despre metadate ale tabelelor create în Hive sunt stocate în Hive „Baza de date meta stocare”.
  • Rezultatele interogărilor și datele încărcate în tabele vor fi stocate în cluster Hadoop pe HDFS.

Flux de execuție a jobului:

Fluxul de execuție a jobului

Din captura de ecran de mai sus putem înțelege fluxul de execuție a jobului în Hive cu Hadoop

Fluxul de date din Hive se comportă după următorul model;

  1. Executarea interogării din interfața de utilizare (interfața utilizator)
  2. Driverul interacționează cu Compiler pentru obținerea planului. (Aici planul se referă la execuția interogării) proces și culegerea de informații despre metadate aferente acestuia
  3. Compilatorul creează planul pentru un job care urmează să fie executat. Compilatorul comunică cu magazinul Meta pentru obținerea cererii de metadate
  4. Magazinul meta trimite informații despre metadate înapoi către compilator
  5. Compilatorul comunică cu Driver cu planul propus pentru a executa interogarea
  6. Driver Trimite planuri de execuție către motorul de execuție
  7. Execution Engine (EE) acționează ca o punte între Hive și Hadoop pentru a procesa interogarea. Pentru operațiunile DFS.
  • EE ar trebui să contacteze mai întâi Name Node și apoi Data nodes pentru a obține valorile stocate în tabele.
  • EE va prelua înregistrările dorite din nodurile de date. Datele reale ale tabelelor se află numai în nodul de date. În timp ce din Name Node preia doar informațiile de metadate pentru interogare.
  • Acesta colectează date reale de la nodurile de date legate de interogarea menționată
  • Execution Engine (EE) comunică bi-direcțional cu magazinul Meta prezent în Hive pentru a efectua operațiuni DDL (Data Definition Language). Aici sunt efectuate operațiuni DDL precum CREATE, DROP și ALTERING tabele și baze de date. Magazinul meta va stoca doar informații despre numele bazei de date, numele tabelelor și numele coloanelor. Acesta va prelua date legate de interogarea menționată.
  • Execution Engine (EE) comunică, la rândul său, cu demonii Hadoop, cum ar fi nodul nume, nodurile de date și instrumentul de urmărire a joburilor, pentru a executa interogarea deasupra sistemului de fișiere Hadoop.
  1. Preluare rezultate de la șofer
  2. Trimiterea rezultatelor către motorul de execuție. Odată ce rezultatele sunt preluate de la nodurile de date către EE, acesta va trimite rezultatele înapoi către driver și către UI (front end)

Hive continuu în contact cu sistemul de fișiere Hadoop și demonii acestuia prin intermediul motorului de execuție. Săgeata punctată din diagrama fluxului jobului arată comunicarea motorului de execuție cu demonii Hadoop.

Diferite moduri de Hive

Hive poate funcționa în două moduri, în funcție de dimensiunea nodurilor de date din Hadoop.

Aceste moduri sunt,

  • Mod local
  • Modul de reducere a hărții

Când să utilizați modul local:

  • Dacă Hadoop este instalat în pseudomod cu un singur nod de date, folosim Hive în acest mod
  • Dacă dimensiunea datelor este mai mică în termeni limitate la o singură mașină locală, putem folosi acest mod
  • Procesarea va fi foarte rapidă pe seturi de date mai mici prezente în mașina locală

Când să utilizați modul de reducere a hărții:

  • Dacă Hadoop are mai multe noduri de date și datele sunt distribuite pe diferite noduri, folosim Hive în acest mod
  • Acesta va funcționa pe o cantitate mare de seturi de date și interogarea va fi executată în mod paralel
  • Procesarea seturilor mari de date cu performanțe mai bune poate fi realizată prin acest mod

În Hive, putem seta această proprietate pentru a menționa ce mod poate funcționa Hive? În mod implicit, funcționează în modul Map Reduce și pentru modul local puteți avea următoarea setare.

Hive pentru a lucra în setul de mod local

SET mapred.job.tracker=local;

Din versiunea 0.7 Hive acceptă un mod de a rula automat joburi de reducere a hărții în modul local.

Ce este Hive Server2 (HS2)?

HiveServer2 (HS2) este o interfață de server care îndeplinește următoarele funcții:

  • Permite clienților la distanță să execute interogări împotriva Hive
  • Preluați rezultatele interogărilor menționate

Din cea mai recentă versiune are câteva caracteristici avansate bazate pe Thrift RPC, cum ar fi;

  • Concurență multi-client
  • Autentificare

Rezumat

Hive este un instrument ETL și de depozit de date pe deasupra ecosistemului Hadoop și utilizat pentru procesarea datelor structurate și semistructurate.

  • Hive este o bază de date prezentă în ecosistemul Hadoop, care efectuează operațiuni DDL și DML și oferă un limbaj de interogare flexibil, cum ar fi HQL, pentru o mai bună interogare și procesare a datelor.
  • Oferă atât de multe caracteristici în comparație cu RDMS care are anumite limitări.

Pentru ca logica specifică utilizatorului să îndeplinească cerințele clientului.

  • Oferă opțiunea de scriere și implementare a scripturilor personalizate și a funcțiilor definite de utilizator.
  • În plus, oferă partiții și compartimente pentru logici specifice de stocare.