Anche se secondo numerosi esperti in­for­ma­ti­ci il sistema data warehouse Apache Hive è destinato a scom­pa­ri­re, questo viene usato ancora oggi per gestire grandi quantità di dati. Inoltre, sistemi più recenti hanno raccolto numerose funzioni di Apache Hive. Vale quindi la pena di dare un’occhiata a Hive e alle sue ap­pli­ca­zio­ni più im­por­tan­ti.

Cos’è Apache Hive?

Apache Hive è un’esten­sio­ne scalabile dell’ap­pli­ca­zio­ne server Apache e dell’ar­chi­tet­tu­ra Apache Hadoop. Nelle ar­chi­tet­tu­re Hadoop, compiti complessi sono scomposti in piccoli processi e di­stri­bui­ti in modo parallelo su computer cluster dai nodi mediante il clu­ste­ring. In tal modo è possibile gestire grandi quantità di dati anche con server e computer dall’ar­chi­tet­tu­ra standard. Apache Hive è un sistema integrato di in­ter­ro­ga­zio­ne e analisi su base open source per il tuo data warehouse. Grazie a Hive i dati possono essere ana­liz­za­ti, in­ter­ro­ga­ti e compilati con HiveQL, un lin­guag­gio per banche dati simile a SQL. Inoltre, i dati Hadoop sono ac­ces­si­bi­li anche a gruppi più grandi di utenti.

Nel caso di Hive viene usata una sintassi simile a quella di SQL:1999 per strut­tu­ra­re programmi, ap­pli­ca­zio­ni e banche dati o anche per integrare degli script. Prima di Hive, per usare l’in­ter­ro­ga­zio­ne di dati era ne­ces­sa­rio conoscere il lin­guag­gio e la pro­gram­ma­zio­ne in Java. Hive è in grado di tradurre le in­ter­ro­ga­zio­ni in un formato adatto alle banche dati. Ad esempio, può trattarsi di job MapReduce. Con Hive è possibile integrare altre ap­pli­ca­zio­ni SQL nel framework Hadoop. A causa dell’ampia dif­fu­sio­ne di SQL, questo sistema facilita (in quanto esten­sio­ne di Hadoop) il lavoro con database e grandi quantità di dati anche per le persone non esperte.

Come funziona Hive?

Prima che Apache Hive com­ple­tas­se il framework Hadoop, l’eco­si­ste­ma Hadoop si fondava ancora sul Framework MapReduce svi­lup­pa­to da Google. Nel caso di Hadoop 1, questo era ancora im­ple­men­ta­to di­ret­ta­men­te nel framework come motore in­di­pen­den­te per l’am­mi­ni­stra­zio­ne, il mo­ni­to­rag­gio e la gestione delle risorse e dei processi di calcolo. Questo a sua volta ri­chie­de­va una co­no­scen­za ap­pro­fon­di­ta di Java per poter in­ter­ro­ga­re con successo i file di Hadoop.

Le funzioni prin­ci­pa­li di Hadoop per l’utilizzo e la gestione dei Big Data con­si­sto­no quindi in:

  • Raccolta dei dati
  • In­ter­ro­ga­zio­ne
  • Analisi

Il fun­zio­na­men­to di Hive si basa su un semplice principio: con un’in­ter­fac­cia simile a SQL è possibile tradurre co­mo­da­men­te in­ter­ro­ga­zio­ni e analisi di file Hadoop per HiveQL in moduli di ela­bo­ra­zio­ne MapReduce, Spark o Tez. Allo stesso modo Hive organizza i file del framework Hadoop in un formato com­pa­ti­bi­le con HDFS. HDFS è sinonimo di Hadoop Di­stri­bu­ted File System. L’in­ter­ro­ga­zio­ne mirata di dati avviene su cluster specifici e nodi del sistema Hadoop. Come funzioni standard sono di­spo­ni­bi­li anche filtri, ag­gre­ga­zio­ni e join.

Hive si basa sul principio schema-on-read

Al contrario dei database re­la­zio­na­li che lavorano secondo il principio SoW (schema-on-write), Hive si basa sul principio SoR (Schema-on-Read). Questo significa che i dati nel framework Hadoop sono salvati ini­zial­men­te senza modifiche e non in uno schema pre­de­fi­ni­to. È possibile adattare i dati a uno schema solo mediante un’in­ter­ro­ga­zio­ne Hive. Il vantaggio, so­prat­tut­to per quanto riguarda il cloud computing è la maggiore sca­la­bi­li­tà, più fles­si­bi­li­tà e tempi di ca­ri­ca­men­to più rapidi dei database di­stri­bui­ti sul cluster.

Com’è possibile lavorare con i dati in Hive?

Le tabelle Apache Hive vengono usate secondo uno schema di accesso in lettura per in­ter­ro­ga­re e ana­liz­za­re le in­for­ma­zio­ni con Hive. Hive ti consente di or­ga­niz­za­re e ordinare tali dati in queste tabelle in unità det­ta­glia­te più piccole o in grandi unità generali. Le tabelle Hive sono suddivise in co­sid­det­ti “bucket”, ovvero blocchi di dati. Per accedere ai dati, usa il lin­guag­gio di database HiveQL, molto simile a SQL. Le tabelle Hive possono essere so­vra­scrit­te, allegate e se­ria­liz­za­te in database. Inoltre, ogni tabella Hive dispone di un proprio catalogo HDFS.

Consiglio

Con l’Hosting Linux di IONOS hai il tuo database sempre sotto controllo. In più godi di pre­sta­zio­ni scalabili, cer­ti­fi­ca­to SSL, pro­te­zio­ne DDoS e server sicuri in Europa.

Le prin­ci­pa­li funzioni di Hive

Fra le funzioni centrali troviamo l’in­ter­ro­ga­zio­ne e l’analisi di grandi quantità di dati e di database, salvate nel framework Hadoop sotto forma di file Hadoop. Un secondo compito centrale di Hive è la tra­du­zio­ne di in­ter­ro­ga­zio­ni HiveQL in incarichi MapReduce, Sparks e Tez.

Altre im­por­tan­ti funzioni di Hive com­pren­do­no:

  • Sal­va­tag­gio di metadati in sistemi di gestione di database re­la­zio­na­li
  • Utilizzo di dati compressi in sistemi Hadoop
  • UDF (User Defined Functions) per l’ela­bo­ra­zio­ne per­so­na­liz­za­ta di dati e il data mining.
  • Supporto per tipi di memoria come RCFile, testo o HBase
  • Uso di MapReduce e supporto ETL

Cos’è HiveQL?

Quando si parla di Hive, spesso lo si descrive come “simile a SQL”. Il lin­guag­gio di database HiveQL, basato su SQL, viene definito così perché questo non soddisfa al 100% standard quali SQL-92. Pertanto, HiveQL può essere inteso come una specie di dialetto SQL o MySQL. No­no­stan­te le numerose so­mi­glian­ze, i due linguaggi si dif­fe­ren­zia­no per alcuni punti es­sen­zia­li. Così, HiveQL sostiene solo in parte numerose funzioni SQL per tran­sa­zio­ni o su­b­que­ries, mentre con alcune esten­sio­ni come Mul­ti­ta­ble Inserts assicura una migliore sca­la­bi­li­tà e per­for­man­ce con il framework Hadoop. La tra­du­zio­ne di in­ter­ro­ga­zio­ni HiveQL in MapReduce, Tez e Spark viene eseguita dall’Apache Hive Compiler.

Consiglio

Usa un server dedicato con potenti pro­ces­so­ri Intel o AMD senza dover investire in un’in­fra­strut­tu­ra IT all’interno della tua azienda; scegli i server di IONOS.

Sicurezza dei dati e Apache Hive

Mediante l’in­te­gra­zio­ne di Apache Hive nei sistemi Hadoop ap­pro­fit­ti anche del servizio di au­ten­ti­ca­zio­ne Kerberos. Questo consente l’au­ten­ti­ca­zio­ne e la verifica chiara e reciproca del server e degli utenti. Poiché HDFS imposta anche i permessi per i nuovi file Hive sarai tu a gestire l’au­to­riz­za­zio­ne di utenti e di gruppi. Un ulteriore aspetto relativo alla sicurezza: in caso di necessità, Hive offre un ri­pri­sti­no di emergenza per carichi di lavoro critici.

Quali vantaggi offre Apache Hive?

Hive offre numerose funzioni utili so­prat­tut­to per quanto riguarda il lavoro con grandi quantità di dati nel cloud computing o in caso di Big Data as a Service:

  • In­ter­ro­ga­zio­ni ad-hoc
  • Analisi di dati
  • Creazione di tabelle e par­ti­zio­ni
  • Supporto per col­le­ga­men­ti logici, re­la­zio­na­li e arit­me­ti­ci
  • Mo­ni­to­rag­gio e verifica di tran­sa­zio­ni
  • Report di fine giornata
  • Ca­ri­ca­men­to di risultati delle in­ter­ro­ga­zio­ni nei cataloghi HDFS
  • Tra­sfe­ri­men­to di dati delle tabelle in directory locali

Fra i vantaggi prin­ci­pa­li an­no­ve­ria­mo:

  • La capacità di ottenere ap­pro­fon­di­men­ti qua­li­ta­ti­vi su grandi quantità di dati, ad esempio il data mining e l’ap­pren­di­men­to au­to­ma­ti­co
  • Sca­la­bi­li­tà ot­ti­miz­za­ta, ef­fi­cien­za dei costi ed espan­si­bi­li­tà del framework Hadoop
  • Seg­men­ta­zio­ne di gruppi di utenti at­tra­ver­so analisi click­stream
  • Grazie a HiveQL non sono ne­ces­sa­rie co­no­scen­ze ap­pro­fon­di­te delle tecniche di pro­gram­ma­zio­ne Java
  • Vantaggio com­pe­ti­ti­vo grazie a pre­sta­zio­ni e reat­ti­vi­tà più rapide e scalabili
  • La capacità di me­mo­riz­za­re fino a centinaia di petabyte di dati e di eseguire fino a 100.000 in­ter­ro­ga­zio­ni di dati all’ora, anche senza un’in­fra­strut­tu­ra di alto livello
  • Migliore utilizzo delle risorse grazie alla capacità di vir­tua­liz­za­zio­ne e, di con­se­guen­za, tempi di calcolo e di ca­ri­ca­men­to più rapidi a seconda dei carichi di lavoro
  • Sicurezza dei dati efficace e tol­le­ran­te agli errori grazie a migliori opzioni di disaster recovery e al servizio di au­ten­ti­ca­zio­ne Kerberos
  • Facoltà di ac­ce­le­ra­re l’in­se­ri­men­to dei dati eli­mi­nan­do la necessità di adattarli ai formati interni dei database (Hive legge e analizza i dati anche senza una modifica manuale del formato)
  • Funziona secondo il principio dell’open source

Quali svantaggi offre Apache Hive?

Fra gli svantaggi di Apache Hive vi è in prima linea il fatto che esistono già numerosi sistemi che offrono simili e migliori pre­sta­zio­ni. Nell’am­mi­ni­stra­zio­ne e nell’uso di database, Hive è con­si­de­ra­to dagli esperti e dalle esperte sempre meno utile e rilevante.

Ulteriori svantaggi di Hive sono:

  • Im­pos­si­bi­li­tà di accesso ai dati in tempo reale
  • Ela­bo­ra­zio­ne complessa e ag­gior­na­men­to di database grazie al framework Hadoop con MapReduce
  • Latenza elevata e quindi, per i canoni odierni, maggiore lentezza rispetto ai sistemi della con­cor­ren­za

L’ar­chi­tet­tu­ra di Hive: una pa­no­ra­mi­ca

I prin­ci­pa­li com­po­nen­ti dell’ar­chi­tet­tu­ra Hive sono:

  • Metastore: è il luogo centrale di Hive in cui vengono salvati i dati, dove si trovano tutti i dati e le in­for­ma­zio­ni in formato RDBMS, come le de­fi­ni­zio­ni delle tabelle, la posizione dello schema e delle directory e i metadati delle par­ti­zio­ni.
  • Driver: accetta i comandi HiveQL e li elabora con i com­po­nen­ti compiler (raccoglie le in­for­ma­zio­ni), optimizer (determina il metodo di ese­cu­zio­ne migliore) ed executor (esegue il compito).
  • Command Line + User Interface: in­ter­fac­cia per utenti esterni
  • Thrift Server: consente ai client esterni di co­mu­ni­ca­re con Hive e permette ai pro­to­col­li JDBC e ODBC di in­te­ra­gi­re e co­mu­ni­ca­re mediante la rete
Immagine: Diagramma dell’architettura di Hive
Per l’ela­bo­ra­zio­ne e l’in­ter­ro­ga­zio­ne di grandi quantità di dati Hive offre numerosi vantaggi alla tua azienda.

Come è nato Apache Hive?

Apache Hive è stato pro­get­ta­to per sem­pli­fi­ca­re il lavoro con insiemi di dati da petabyte anche per gli utenti che non hanno co­no­scen­ze ap­pro­fon­di­te di SQL. È stato ideato e svi­lup­pa­to da Joydeep Sen Sharma e Ashish Thusoo che nel 2007, mentre la­vo­ra­va­no per Facebook, hanno svi­lup­pa­to Hive per il framework Hadoop di Facebook, uno dei prin­ci­pa­li al mondo con diverse centinaia di petabyte. Nel 2008 Facebook ha ceduto il progetto Hive alla comunità open source. La versione 1.0 è stata ri­la­scia­ta nel febbraio 2015.

Vai al menu prin­ci­pa­le