Comprensione approfondita
Hadoop
Hadoopè un progetto open source della Apachefondazione. È un framework scritto in Java, originariamente sviluppato da Doug Cutting nel 2005. È stato creato per supportare la distribuzione Nutchdel motore di ricerca testuale. Hadooputilizza le tecnologie di Google Map Reducee 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: MAPe REDUCEper 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 MapReduceprogrammazione.
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.0strettamente 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 MapReducemodo che possa essere eseguita in Hadoopo
Estrai HDFSo elabora i dati da Hadoop.
Nessuna delle opzioni era praticabile in quanto ha portato a inefficienze di processo causate dal trasferimento di dati dal Hadoopcluster.
Hadoop 2.0
In Hadoop 2.0, HDFScontinua 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. MapReducenon è 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. Hadooppuò 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 Hadoopgrazie al paradigma "sposta il codice in dati".
Hadoop Ecosystem
Di seguito sono riportati i componenti Hadoopdell'ecosistema:
HDFS : Hadoopfile 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à SQLdovrebbe essere in grado di accedere ai dati su un Hadoopcluster.
Maiale : è un linguaggio di flusso di dati di facile comprensione. Aiuta con l'analisi di grandi set di dati che è abbastanza in ordine Hadoop. Piggli script vengono automaticamente convertiti in MapReducelavori Pigdall'interprete.
ZooKeeper : è un servizio di coordinamento per applicazioni distribuite.
Oozie : è un schedularsistema di flusso di lavoro per gestire i Hadooplavori 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 Hadoope archivi di dati strutturati come database relazionali.
Ambari : è uno strumento basato sul Web per il provisioning, la gestione e il monitoraggio dei Hadoopcluster.
Alveare
Hiveè uno strumento di infrastruttura di data warehouse in cui elaborare dati strutturati Hadoop. Risiede inoltre nella Hadoopsintesi 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 SQLlingua dei tipi per le query chiamate HiveQLo HQL.
È più familiare, veloce, scalabile ed estensibile.
Hive Architecture
I seguenti componenti sono contenuti in Hive Architecture:
Interfaccia utente : Hiveè data warehouseun'infrastruttura che può creare interazione tra utente e HDFS. Le interfacce utente che Hivesupportano sono l'interfaccia utente Web Hive, la riga di comando Hive e Hive HD Insight (in Windows Server).
MetaStore : Hivesceglie rispettivamente database serversdi memorizzare lo schema o Metadatadi tabelle, database, colonne in una tabella, i loro tipi di dati e HDFSmappatura.
HiveQL Process Engine : HiveQLè simile a SQLper le query sulle informazioni dello schema sul Metastore. È una delle sostituzioni dell'approccio tradizionale al MapReduceprogramma. Invece di scrivere MapReducea Java, possiamo scrivere una query per MapReducee di processo.
Motore di esecuzione : la parte congiunta del HiveQLmotore di processo ed MapReduceè il Hivemotore di esecuzione. Il motore di esecuzione elabora la query e genera i risultati come MapReduce results. Usa il sapore di MapReduce.
HDFS o HBase : Hadoopfile system distribuito o HBasesono le tecniche di archiviazione dei dati per archiviare i dati nel file system.