Comprensione approfondita
Hadoop
Hadoop
è un progetto open source della Apache
fondazione. È un framework scritto in Java
, originariamente sviluppato da Doug Cutting nel 2005. È stato creato per supportare la distribuzione Nutch
del motore di ricerca testuale. Hadoop
utilizza le tecnologie di Google Map Reduce
e File System di Google come base.
Caratteristiche di Hadoop
- È ottimizzato per gestire enormi quantità di dati strutturati, semi-strutturati e non strutturati utilizzando hardware di base.
- Non ha condiviso nulla di architettura.
- Replica i suoi dati su più computer in modo che, se uno si interrompe, i dati possono ancora essere elaborati da un'altra macchina che archivia la sua replica.
Hadoop
è per un throughput elevato piuttosto che una bassa latenza. È un'operazione batch che gestisce enormi quantità di dati; pertanto il tempo di risposta non è immediato.
- Completa l'elaborazione delle transazioni online e l'elaborazione analitica online. Tuttavia, non è un sostituto di a
RDBMS
.
- Non va bene quando il lavoro non può essere parallelizzato o quando ci sono dipendenze all'interno dei dati.
- Non è utile per l'elaborazione di file di piccole dimensioni. Funziona meglio con enormi file di dati e set di dati.
Versioni di Hadoop
Sono disponibili due versioni Hadoop
:
- Hadoop 1.0
- Hadoop 2.0
Hadoop 1.0
Ha due parti principali:
1. Framework di archiviazione dei dati
È un file system generico chiamato Hadoop Distributed File System ( HDFS
).
HDFS
è senza schema
Memorizza semplicemente i file di dati e questi file di dati possono essere in quasi tutti i formati.
L'idea è di archiviare i file il più vicino possibile alla loro forma originale.
Questo a sua volta fornisce alle unità aziendali e all'organizzazione la flessibilità e l'agilità necessarie senza essere eccessivamente preoccupati da ciò che può implementare.
2. Quadro di elaborazione dei dati
Questo è un semplice modello di programmazione funzionale inizialmente reso popolare da Google come MapReduce
.
Utilizza essenzialmente due funzioni: MAP
e REDUCE
per elaborare i dati.
I "Mapper" accettano un insieme di coppie chiave-valore e generano dati intermedi (che è un altro elenco di coppie chiave-valore).
I "riduttori" agiscono quindi su questo input per produrre i dati di output.
Le due funzioni sembrano funzionare in modo isolato l'una con l'altra, consentendo in tal modo che l'elaborazione sia altamente distribuita in modo altamente parallelo, tolleranza agli errori e scalabilità.
Limitazioni di Hadoop 1.0
La prima limitazione era il requisito dell'esperienza di MapReduce
programmazione.
Supportava solo l'elaborazione batch che, sebbene sia adatta per attività come l'analisi dei registri, i progetti di data mining su larga scala ma praticamente non adatta ad altri tipi di progetti.
Una delle principali limitazioni era quella Hadoop 1.0
strettamente accoppiata dal punto di vista computazionale MapReduce
, il che significava che i fornitori di gestione dei dati affermati avevano lasciato due opinioni:
Riscrivi la loro funzionalità in MapReduce
modo che possa essere eseguita in Hadoop
o
Estrai HDFS
o elabora i dati da Hadoop
.
Nessuna delle opzioni era praticabile in quanto ha portato a inefficienze di processo causate dal trasferimento di dati dal Hadoop
cluster.
Hadoop 2.0
In Hadoop 2.0
, HDFS
continua ad essere il framework di archiviazione dei dati.
Tuttavia, un nuovo e separato quadro di gestione di risorse denominato Y et A nother R eSource N egotiater ( FILATO è stato aggiunto).
Qualsiasi applicazione in grado di dividersi in attività parallele è supportata da YARN.
YARN coordina l'allocazione delle attività secondarie della domanda presentata, migliorando ulteriormente la flessibilità, la scalabilità e l'efficienza delle applicazioni.
Funziona avendo un Application Master al posto di Job Tracker , eseguendo applicazioni su risorse governate dal nuovo Node Manager .
ApplicationMaster è in grado di eseguire qualsiasi applicazione e non solo MapReduce
.
Ciò significa che non supporta solo l'elaborazione batch ma anche l'elaborazione in tempo reale. MapReduce
non è più l'unica opzione di elaborazione dei dati.
Vantaggi di Hadoop
Memorizza i dati nel suo nativo da. Non è stata imposta alcuna struttura durante la digitazione dei dati o la memorizzazione dei dati. HDFS
è lo schema in meno. Solo più tardi, quando è necessario elaborare i dati, la struttura viene imposta ai dati non elaborati.
È scalabile. Hadoop
può archiviare e distribuire set di dati molto grandi su centinaia di server economici che operano in parallelo.
Resiste al fallimento. Hadoop
è tolleranza ai guasti. Pratica la replica dei dati diligentemente, il che significa che ogni volta che i dati vengono inviati a qualsiasi nodo, gli stessi dati vengono replicati anche su altri nodi del cluster, garantendo in tal modo che in caso di guasto del nodo, ci sarà sempre un'altra copia dei dati disponibili per l'uso.
È flessibile. Uno dei principali vantaggi di Hadoop
è che può funzionare con qualsiasi tipo di dati: strutturato, non strutturato o semi-strutturato. Inoltre, l'elaborazione è estremamente rapida Hadoop
grazie al paradigma "sposta il codice in dati".
Hadoop Ecosystem
Di seguito sono riportati i componenti Hadoop
dell'ecosistema:
HDFS : Hadoop
file system distribuito. Memorizza semplicemente i file di dati il più vicino possibile al modulo originale.
HBase : è il database di Hadoop e si confronta bene con un RDBMS
. Supporta l'archiviazione di dati strutturati per tabelle di grandi dimensioni.
Hive : consente l'analisi di set di dati di grandi dimensioni utilizzando un linguaggio molto simile allo standard ANSI SQL
, il che implica che chiunque abbia familiarità SQL
dovrebbe essere in grado di accedere ai dati su un Hadoop
cluster.
Maiale : è un linguaggio di flusso di dati di facile comprensione. Aiuta con l'analisi di grandi set di dati che è abbastanza in ordine Hadoop
. Pig
gli script vengono automaticamente convertiti in MapReduce
lavori Pig
dall'interprete.
ZooKeeper : è un servizio di coordinamento per applicazioni distribuite.
Oozie : è un schedular
sistema di flusso di lavoro per gestire i Hadoop
lavori Apache .
Mahout : è una libreria di apprendimento automatico e data mining scalabile.
Chukwa : è un sistema di raccolta dati per la gestione di grandi sistemi distribuiti.
Sqoop : viene utilizzato per trasferire dati di massa tra Hadoop
e archivi di dati strutturati come database relazionali.
Ambari : è uno strumento basato sul Web per il provisioning, la gestione e il monitoraggio dei Hadoop
cluster.
Alveare
Hive
è uno strumento di infrastruttura di data warehouse in cui elaborare dati strutturati Hadoop
. Risiede inoltre nella Hadoop
sintesi dei Big Data e semplifica l'interrogazione e l'analisi.
L'alveare no
Un database relazionale
Un design per l'elaborazione delle transazioni online ( OLTP
).
Una lingua per query in tempo reale e aggiornamenti a livello di riga.
Caratteristiche di Hive
Memorizza lo schema nel database e i dati elaborati in HDFS
.
È progettato per OLAP
.
Fornisce la SQL
lingua dei tipi per le query chiamate HiveQL
o HQL
.
È più familiare, veloce, scalabile ed estensibile.
Hive Architecture
I seguenti componenti sono contenuti in Hive Architecture:
Interfaccia utente : Hive
è data warehouse
un'infrastruttura che può creare interazione tra utente e HDFS
. Le interfacce utente che Hive
supportano sono l'interfaccia utente Web Hive, la riga di comando Hive e Hive HD Insight (in Windows Server).
MetaStore : Hive
sceglie rispettivamente database
servers
di memorizzare lo schema o Metadata
di tabelle, database, colonne in una tabella, i loro tipi di dati e HDFS
mappatura.
HiveQL Process Engine : HiveQL
è simile a SQL
per le query sulle informazioni dello schema sul Metastore
. È una delle sostituzioni dell'approccio tradizionale al MapReduce
programma. Invece di scrivere MapReduce
a Java
, possiamo scrivere una query per MapReduce
e di processo.
Motore di esecuzione : la parte congiunta del HiveQL
motore di processo ed MapReduce
è il Hive
motore di esecuzione. Il motore di esecuzione elabora la query e genera i risultati come MapReduce results
. Usa il sapore di MapReduce
.
HDFS o HBase : Hadoop
file system distribuito o HBase
sono le tecniche di archiviazione dei dati per archiviare i dati nel file system.