Arhitectura și comenzile Apache Hive: moduri, caracteristici și aplicații
Publicat: 2021-06-30Cuprins
Ce este Hive?
Stupul Apache este un instrument open-source de depozitare a datelor dezvoltat de Facebook pentru procesarea distribuită și analiza datelor. Este dezvoltat pe baza sistemului de fișiere distribuit Hadoop (HDFS). Hive oferă un mecanism pentru proiectarea structurii pe datele din Hadoop. Un limbaj asemănător SQL numit HiveQL (HQL) este folosit pentru a interoga acele date. Există o asemănare între tabelele din Hive și tabelele dintr-o bază de date relațională. Interogările Hive pot fi scrise cu ușurință de oricine este familiarizat cu SQL.
Câteva caracteristici ale Hive sunt:
- Stocarea informațiilor de schemă într-o bază de date și a datelor procesate în HDFS.
- Proiectat pentru OLAP.
- Limbajul de interogare este HiveQL sau HQL, care este similar cu SQL.
- Este rapid, familiar, scalabil și extensibil.
Utilizări ale Stupului
- Este stocarea distribuită Apache Hive.
- Sunt furnizate instrumente care permit utilizatorilor să extragă, transformă și încărcă cu ușurință date.
- Pentru furnizarea structurii sunt oferite o varietate de formate de date.
- Fișierele stocate în Hadoop Distributed File System (HDFS) pot fi accesate de Hive.
Comenzile Stupului
Comenzile stupului sunt:
- Limbajul de definire a datelor (DDL): Tabelele și alte obiecte din baza de date sunt construite și modificate prin aceste comenzi.
- CREATE: Este folosit pentru a crea un tabel sau o bază de date.
- SHOW: Este folosit pentru a afișa baza de date, tabel, proprietăți etc.
- ALTER: Este folosit pentru a face modificări la tabelul existent.
- DESCRIERE: Descrie coloanele tabelului.
- TRUNCATE: Folosit pentru a trunchia și șterge definitiv rândurile de tabele.
- DELETE: Șterge datele din tabel, dar pot fi restaurate.
- Limbajul de manipulare a datelor (DML): folosit pentru a prelua, stoca, modifica, șterge, insera și actualiza datele din baza de date.
- Sintaxă pentru instrucțiuni LOAD, INSERT
ÎNCĂRCARE date <LOCAL> inpath <cale file> în tabelul [tablename]
- După încărcarea datelor, comenzile de manipulare a datelor sunt folosite pentru a prelua datele.
- Funcția de numărare agregată este utilizată pentru a număra numărul total de înregistrări dintr-un tabel.
- cuvântul cheie „create extern” este folosit pentru a crea un tabel și oferă o locație în care va fi creat tabelul. Un tabel EXTERN indică orice locație HDFS pentru stocarea acestuia.
- Comenzile de inserare sunt folosite pentru a încărca tabelul Hive de date. „Insert overwrite” este folosit pentru a suprascrie datele existente, iar „insert into” este folosit pentru a adăuga datele într-o dată existentă.
- Un tabel este împărțit în partiții prin comanda „partiționat prin” și împărțit în găleți prin comanda „clustered by”.
- Inserarea datelor generează erori, deoarece partiția dinamică nu este activată. Prin urmare, următorii parametri trebuie setati în carcasa Hive.
set hive.exec.dynamic.partition=true;
Pentru a activa partițiile dinamice, în mod implicit, este fals
set hive.exec.dynamic.partition.mode=nonstrict;
- Comanda „Drop Table” șterge datele și metadatele pentru un tabel
- Agregare: Sintaxă:
Selectați numărul (categoria DISTINCT) din tablename;
Comanda va număra diferite categorii de tabele „cate”.
- Grupare: Sintaxă:
Selectați categoria, suma (suma) din înregistrările txt grupate după categorie
Setul de rezultate va fi grupat în una sau mai multe coloane.
- Operațiunea de alăturare: efectuați combinarea câmpurilor din două tabele folosind valori comune fiecărei coloane.
- Left outer join: Pentru tabelele A și B, stânga outer join trebuie să conțină toate înregistrările tabelului „stânga” (A), chiar dacă condiția de îmbinare nu găsește nicio înregistrare care se potrivește în tabelul „dreapta” (B).
- Right Outer Join: Fiecare rând din tabelul „dreapta” (B) va apărea în tabelul unit cel puțin o dată.
- Unire completă: Tabelul alăturat va conține toate înregistrările din ambele tabele Tabelul alăturat va conține toate înregistrările din ambele tabele.
Arhitectura stupului
Arhitectura stupului apache este prezentată în Figura 1 .
Lista componentelor majore
Componentele majore ale arhitecturii stupului sunt:
1. Client de stup
Diferite aplicații scrise în limbaje precum Java, Python, C++ etc. sunt comunicate prin utilizarea diferitelor drivere furnizate de Hive. Poate fi scris în orice limbă după alegere. Clienții și serverele comunică la rândul lor cu serverul Hive în serviciile Hive.
În mare parte, acestea sunt clasificate în trei tipuri:
- Client Thrift: se bazează pe Apache Thrift pentru a servi o solicitare de la un client Thrift. Clientul Thrift va fi folosit pentru comunicare pentru aplicațiile bazate pe Thrift.
- Client JDBC: JDBC este furnizat pentru aplicațiile legate de Java. Aplicațiile Java sunt conectate la Hive folosind driverul JDBC. În continuare, folosește Thrift pentru a comunica cu serverul Hive.
- Client ODBC: Aplicațiile bazate pe protocolul ODBC au voie să se conecteze la Hive prin driverele ODBC. Similar cu JDBC, folosește Thrift pentru a comunica cu serverul Hive.
2. Servicii Hive
Serviciile Hive oferă mijloace pentru interacțiunile Hive cu Clienții. Orice operațiuni legate de interogări care trebuie efectuate de către Client vor trebui comunicate prin intermediul serviciilor de Închiriere. Pentru operațiunile Data Definition Language (DDL), CLI acționează ca serviciu Hive.
Toți șoferii trebuie să comunice cu serverul Hive și apoi cu șoferul principal din serviciile Hive. Driverele din serviciile Hive reprezintă driverul principal care comunică cu aplicațiile specifice Clientului și toate tipurile de JDBC, ODBC, etc. Solicitările din diferite aplicații sunt procesate de driver către metastore și sistemele de teren care vor fi procesate în continuare.
Serviciile oferite de Hive sunt:
- Beeline: Beeline este un shell de comandă în care un utilizator își poate trimite interogările către sistem. Este suportat de HiveServer2. Este un client JDBC care se bazează pe SQLLINE CLI.
- Hive Server 2: Clienții au voie să execute interogări împotriva stupului. Un succesor al lui HiveServer1, permite executarea de interogări multiple de la mai mulți clienți. Oferă cel mai bun suport pentru clienții API deschisi precum JDBC și ODBC.
- Driver Hive: utilizatorul trimite instrucțiunile HiveQL driverului Hive prin intermediul shell-ului de comandă. Trimite interogarea către compilator și creează mânere de sesiune pentru interogare.
- Compilatorul Hive: compilatorul Hive este folosit pentru a trece interogarea. Folosind metadatele stocate în metamagazin, compilatorul Hive efectuează analize semantice și verificări de tip pe diferitele blocuri și expresii de interogare. Un plan de execuție este apoi generat de compilator care este DAG (Graficul aciclic direcționat). Fiecare etapă a DAG este o operațiune de metadate, operațiune pe HDFS sau este o lucrare de mapare/reducere.
- Optimizer: Rolul principal al optimizatorului este de a efectua operațiuni de transformare pe planul de execuție. Mărește eficiența și scalabilitatea prin împărțirea sarcinilor.
- Motor de execuție : După finalizarea etapelor de compilare și optimizare, rolul motorului de execuție este cel care execută planul de execuție creat de compilator. Planul este executat folosind Hadoop în ordinea dependențelor lor.
- Metastore : Metastore este în general o bază de date relațională care stochează informațiile despre metadate legate de structura tabelelor și partițiilor. Este un depozit central care include și stocarea informațiilor despre tipurile de coloane și coloane. Informațiile legate de serializator și deserializator sunt, de asemenea, stocate în Metastore, care sunt necesare pentru operațiunile de citire/scriere împreună cu fișierele HDFS care stochează date. Metastore oferă o interfață Thrift pentru interogarea și manipularea metadatelor Hive.
Metastore poate fi configurat în două moduri:
- La distanță: Acest mod este util pentru aplicațiile non-Java, iar în modul la distanță metastore este un serviciu Thrift.
- Încorporat: în acest mod, clientul poate interacționa direct cu metastore prin intermediul JDBC.
- HCatalog: Stratul de gestionare a tabelelor și a stocării pentru Hadoop este HCatalog. Sunt disponibile diferite instrumente de procesare a datelor pentru citirea și scrierea datelor pe grilă, cum ar fi Pig, MapReduce etc. Construite pe partea de sus a metastore-ului Hive, datele tabulare ale metastore-ului Hive sunt expuse altor instrumente de procesare a datelor.
- WebHCat: WebHCat este o interfață HTTP și API REST pentru HCatalog. Efectuează operațiuni de metadate Hive și oferă un serviciu de rulare a joburilor Hadoop MapReduce (sau YARN), Pig, Hive.
3. Procesare și management al resurselor
Executarea interogărilor este realizată de un cadru intern MapReduce.
Cadrul MapReduce este un cadru software pentru procesarea unor cantități mari de date pe grupuri mari de hardware de bază. Datele sunt împărțite în bucăți și apoi procesate prin sarcini de reducere a hărții.
4. Depozitare distribuită
Serviciile Hive comunică cu depozitul Hive pentru a efectua următoarele acțiuni:
- „Baza de date meta stocare” Hive deține informațiile de metadate ale tabelelor create în Hive.
- Clusterul Hadoop pe HDFS va stoca rezultatele interogării și datele încărcate în tabele.
Diferite moduri de stup
În funcție de dimensiunea datelor, Hive poate funcționa în două moduri.
- Mod local
Modul local al Hive este folosit când
- Hadoop instalat are un singur nod de date și este instalat în pseudomod.
- Dimensiunea datelor unei singure mașini locale este mai mică.
- Procesare rapidă pe mașinile locale datorită setului de date mai mic prezent.
- Modul de reducere a hărții
Modul de reducere a hărții din Hive este utilizat când
- Hadoop are mai multe noduri de date cu date distribuite pe diferite noduri.
- Dimensiunea datelor este mai mare și este necesară executarea paralelă a interogării.
- Seturi mari de date pot fi procesate cu performanțe mai bune.
Caracteristicile Stupului
- Datele sunt încărcate în tabele după ce tabelele și bazele de date sunt create.
- Doar datele structurate stocate în tabele pot fi gestionate și interogate de Hive.
- Cadrul Hive are caracteristici de optimizare și de utilizare în timp ce se ocupă cu datele structurate care nu sunt prezente în Map Reduce.
- Pentru ușurință în utilizare, limbajul inspirat de Hive SQL este o abordare mai simplă în comparație cu limbajul de programare complex Map Reduce. În Hive sunt folosite concepte familiare de tabele, rânduri, coloane etc.
- Pentru a crește performanța interogărilor, Hive poate partiționa datele folosind o structură de directoare.
- Hive conține o componentă importantă numită „Metastore”, care se află într-o bază de date relațională și stochează informații despre schemă. Două metode pot fi folosite pentru a interacționa cu Hive: interfața Web GUI și Java Database Connectivity (JDBC).
- O interfață de linie de comandă (CLI) este utilizată pentru majoritatea interacțiunilor. CLI este folosit pentru scrierea interogărilor Hive folosind limbajul Hive Query Language (HQL).
- Sintaxa HQL este similară cu cea a sintaxei SQL.
- Hive acceptă patru formate de fișiere; TEXTFILE, SEQUENCEFILE, ORC și RCFILE (Fișier Columnar de înregistrare).
Concluzie
Apache Hive este un instrument open-source de depozitare a datelor, format din componente majore, cum ar fi clienții Hive, serviciile Hive, cadrul de procesare și gestionarea resurselor și stocarea distribuită.
Este construit pe deasupra ecosistemului Hadoop pentru procesarea structurilor și a datelor semi-structurate. Interfața cu utilizatorul oferită de Hive permite utilizatorului să își trimită interogările în Hive Query Language (HQL). Acesta este transmis compilatorului pentru a genera un plan de execuție. Planul este în sfârșit executat de motorul de execuție.
Dacă sunteți interesat să aflați mai multe despre Big Data, consultați programul nostru PG Diploma în Dezvoltare Software Specializare în Big Data, care este conceput pentru profesioniști care lucrează și oferă peste 7 studii de caz și proiecte, acoperă 14 limbaje și instrumente de programare, practică practică. ateliere de lucru, peste 400 de ore de învățare riguroasă și asistență pentru plasarea unui loc de muncă cu firme de top.
Consultați celelalte cursuri ale noastre de inginerie software la upGrad.