Apache Hadoop: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
m Aggiungo un altro libro relativo ad SQl su hadoop
Elaborazione in modalità streaming, architettura lambda e kappa
Riga 33: Riga 33:
Tra le applicazioni e librerie usate più spesso in un cluster Hadoop, troviamo:
Tra le applicazioni e librerie usate più spesso in un cluster Hadoop, troviamo:


'''Elaborazione dati'''
'''Elaborazione dati in modalità batch'''


Quando nacque Hadoop, l'unico modo di realizzare applicativi di elaborazione dati era MapReduce, che richiede di scrivere molto codice Java anche per le attività più semplici. Col passare degli anni, vennero inventate librerie come [https://www.cascading.org/ Cascading] e [http://crunch.apache.org/ Apache Crunch] per rendere più agevole la realizzazione di questi programmi. A questi si è affiancato [[Pig (programma)|Pig]], uno strumento che permetteva di usare un linguaggio ispirato ad SQL.
Quando nacque Hadoop, l'unico modo di realizzare applicativi di elaborazione dati era MapReduce, che richiede di scrivere molto codice Java anche per le attività più semplici. Col passare degli anni, vennero inventate librerie come [https://www.cascading.org/ Cascading] e [http://crunch.apache.org/ Apache Crunch] per rendere più agevole la realizzazione di questi programmi. A questi si è affiancato [[Pig (programma)|Pig]], uno strumento che permetteva di usare un linguaggio ispirato ad SQL.
Riga 39: Riga 39:
Un cambiamento consistente è avvenuto con l'introduzione di [[Apache Spark]] che usa in modo aggressivo la memoria RAM dei nodi del cluster per eseguire le elaborazioni con una velocità nettamente superiore a quella di MapReduce.
Un cambiamento consistente è avvenuto con l'introduzione di [[Apache Spark]] che usa in modo aggressivo la memoria RAM dei nodi del cluster per eseguire le elaborazioni con una velocità nettamente superiore a quella di MapReduce.


'''Elaborazione dati in modalità Streaming'''
Successivamente è stato introdotto [https://flink.apache.org/ Apache Flink] per l'elaborazione di dati in modalità streaming con bassa latenza.

Per l'elaborazione di dati in modalità streaming con bassa latenza è possibile usare:

* [https://apex.apache.org/ Apache Apex]
* [https://flink.apache.org/ Apache Flink]
* [https://apache.github.io/incubator-heron/ Apache Heron]
* [https://samza.apache.org/ Apache Samza]
* [https://gearpump.github.io/gearpump/ Gearpump]


Una libreria degna di nota è [https://akka.io/ Akka]. Questa permette di elaborare dati con delle prestazioni molto elevate sfruttando l'Actor Model. Le prime versioni di Apache Spark, precedenti alla 1.6, erano costruite proprio su Akka.
Una libreria degna di nota è [https://akka.io/ Akka]. Questa permette di elaborare dati con delle prestazioni molto elevate sfruttando l'Actor Model. Le prime versioni di Apache Spark, precedenti alla 1.6, erano costruite proprio su Akka.
Riga 62: Riga 70:
'''Altri strumenti'''
'''Altri strumenti'''
* [[Apache ZooKeeper]], un servizio di configurazione e sincronizzazione distribuito,
* [[Apache ZooKeeper]], un servizio di configurazione e sincronizzazione distribuito,

== Architetture dei sistemi basati su Hadoop ==
Usando Hadoop è possibile realizzare architetture di tipo Lambda, descritte da Nathan Marz e James Warren. Questo tipo di architettura prevede dei flussi batch e dei flussi streaming in parallelo.


== Distribuzioni di Hadoop ==
== Distribuzioni di Hadoop ==
Sebbene sia possibile scaricare ed installare autonomamente tutti i software necessari per far funzionare un cluster Hadoop, in molti casi è preferibile usare una distribuzione nella quale sono già presenti ed installati tutti questi software.
Sebbene sia possibile scaricare ed installare autonomamente tutti i software necessari per far funzionare un cluster Hadoop, in molti casi è preferibile usare una distribuzione nella quale sono già presenti ed installati tutti questi software. Il limite di questo approccio è che bisogna scrivere il doppio del codice. Per provare a superare questo limite, è stata proposta l'architettura Kappa, nella quale viene fatto tutto in streaming.


Tra le distribuzioni più note troviamo:
Tra le distribuzioni più note troviamo:
Riga 72: Riga 83:


== Bibliografia ==
== Bibliografia ==
* {{cita web|url=https://www.oreilly.com/ideas/questioning-the-lambda-architecture|titolo=Questioning the Lambda Architecture | autore=Jay Kreps |lingua=en|accesso=9 aprile 2019}}
* {{cita libro | nome=Tom | cognome=White | titolo=Hadoop: The Definitive Guide, 4th Edition | anno=2015 | editore=O'Reilly | città= | url=http://shop.oreilly.com/product/0636920033448.do | lingua=en}}
* {{cita libro| nome=Nathan | cognome=Marz | nome2=James | cognome2=Warren | titolo= Big Data. Principles and best practices of scalable realtime data systems | anno=2015 | editore=Manning | città | url=https://www.manning.com/books/big-data | lingua=en }}
* {{cita libro | nome=Tom | cognome=White | titolo=Hadoop: The Definitive Guide, 4th Edition | anno=2015 | editore=O'Reilly | città= | url=http://shop.oreilly.com/product/0636920033448.do | lingua=en}}
* {{cita libro | nome=Sam R. | cognome=Alapati | titolo=Expert Hadoop® Administration | anno=2016 | editore= Addison-Wesley | città= | url=https://www.pearson.com/us/higher-education/program/Alapati-Expert-Hadoop-Administration-Managing-Tuning-and-Securing-Spark-YARN-and-HDFS/PGM1102284.html | lingua=en }}
* {{cita libro | nome=Sam R. | cognome=Alapati | titolo=Expert Hadoop® Administration | anno=2016 | editore= Addison-Wesley | città= | url=https://www.pearson.com/us/higher-education/program/Alapati-Expert-Hadoop-Administration-Managing-Tuning-and-Securing-Spark-YARN-and-HDFS/PGM1102284.html | lingua=en }}
* {{cita libro | nome=Sumit | cognome=Pal | titolo=SQL on Big Data | anno=2016 | editore=Apress | città= | url=https://www.apress.com/gp/book/9781484222461 | lingua=en }}
* {{cita libro | nome=Sumit | cognome=Pal | titolo=SQL on Big Data | anno=2016 | editore=Apress | città= | url=https://www.apress.com/gp/book/9781484222461 | lingua=en }}

Versione delle 01:40, 9 apr 2019

Apache Hadoop
software
Logo
Logo
GenereCalcolo distribuito
SviluppatoreApache Software Foundation
Data prima versione1º aprile 2006
Ultima versione3.4.0 (17 marzo 2024)
Sistema operativoMultipiattaforma
LinguaggioJava
LicenzaApache License 2.0
(licenza libera)
Sito webhadoop.apache.org

Apache Hadoop è un framework sotto una licenza libera che supporta applicazioni distribuite con elevato accesso ai dati, permettendo alle applicazioni di lavorare con migliaia di nodi e petabyte di dati. Ispirato dalla MapReduce di Google e dal Google File System, è un progetto Apache di alto livello costruito e usato da una comunità globale di contributori, che usano i linguaggi di programmazione Java e, per gli strumenti più recenti, Scala.

Yahoo! è il più grande contributore a questo progetto, e ne fa fortemente uso. È usato anche da: AOL, Ebay, Facebook, IBM, ImageShack, Joost, Linkedin, Spotify, The New York Times e Twitter.

Offre una grande quantità di librerie di semplice utilizzo ad ha per il momento tre versioni, la prima versione di Hadoop utilizza l'algoritmo Map Reduce e Hadoop Distributed File System (HDFS); dalla prima versione di Hadoop sono cambiate le necessità di prestazione, per questo motivo la seconda versione è stata quindi integrata con l'architettura YARN.

Il nome del progetto è stato scelto dal suo creatore Doug Cutting, il quale ha scelto Hadoop, il nome dell'elefante di pezza di suo figlio. In origine fu sviluppato per supportare la distribuzione per il progetto del motore di ricerca Nutch.

Architettura

Il principale componente è Hadoop Common, che fornisce accesso al file system supportato da Hadoop. L'Hadoop Common package contiene i file jar e gli script necessari per avviare Hadoop. Il package fornisce inoltre il codice sorgente, la documentazione e una sezione contributi che include i progetti della comunità Hadoop.

File System

L'Hadoop Distributed File System (in sigla HDFS) è un file system distribuito, portabile e scalabile scritto in Java per il framework Hadoop. Un cluster in Hadoop tipicamente possiede uno o più name node (su cui risiedono i metadati dei file) e un insieme di data node (su cui risiedono, in blocchi di dimensione fissa, i file dell'HDFS). I formati più usati per i file su HDFS sono Comma-separated values, Apache Avro, Apache ORC e Apache Parquet.

Hadoop supporta anche:

  • Amazon S3 file system;
  • Azure data lake store;

Hadoop può lavorare direttamente con qualsiasi file system distribuito che possa essere montato da un sistema operativo sottostante semplicemente usando un URL del tipo 'file://'.

Applicazioni e librerie usate nei cluster Hadoop

Tra le applicazioni e librerie usate più spesso in un cluster Hadoop, troviamo:

Elaborazione dati in modalità batch

Quando nacque Hadoop, l'unico modo di realizzare applicativi di elaborazione dati era MapReduce, che richiede di scrivere molto codice Java anche per le attività più semplici. Col passare degli anni, vennero inventate librerie come Cascading e Apache Crunch per rendere più agevole la realizzazione di questi programmi. A questi si è affiancato Pig, uno strumento che permetteva di usare un linguaggio ispirato ad SQL.

Un cambiamento consistente è avvenuto con l'introduzione di Apache Spark che usa in modo aggressivo la memoria RAM dei nodi del cluster per eseguire le elaborazioni con una velocità nettamente superiore a quella di MapReduce.

Elaborazione dati in modalità Streaming

Per l'elaborazione di dati in modalità streaming con bassa latenza è possibile usare:

Una libreria degna di nota è Akka. Questa permette di elaborare dati con delle prestazioni molto elevate sfruttando l'Actor Model. Le prime versioni di Apache Spark, precedenti alla 1.6, erano costruite proprio su Akka.

Sono strati creati anche degli strumenti che permettono di definire i flussi di elaborazione dati attraverso dei diagrammi. Tra questi troviamo Apache NiFi e StreamSets Data Collector.

Strumenti per la gestione dei dati

  • Apache Hive, che viene usato per interrogare il contenuto di HDFS usando un linguaggio molto simile all'SQL che si chiama Hive Query Language;
  • Apache Impala, simile a Hive, ma avente una latenza inferiore a fronte di un throughput inferiore. A questo software mancano le funzionalità più avanzate di Hive, ad esempio la gestione degli indici e dei dati di dato più complessi. Usa Impala Query Language;
  • Apache Drill, uno strumento simile ad Hive ed Impala;
  • Presto uno strumento per interrogare dati su HDFS simile ad Hive ed Impala, sviluppato da Facebook;
  • Apache Kafka che viene usato per trasmettere dei messaggi e per custodire nel tempo i messaggi che sono stati trasmessi;
  • Sqoop, strumento da linea di comando che permette di importare dati da basi dati relazionali verso HDFS e vice versa;
  • Apache Flume, un servizio distribuito affidabile e disponibile per la raccolta, l'aggregazione e il trasporto un grande quantitativo di dati di log in maniera efficiente.

Console web

  • Apache Ambari, che aiuta ad amministrare un cluster Hadoop con maggiore semplicità;
  • Hue, una interfaccia grafica che permette di avere un punto di ingresso unico a tutti gli strumenti web per Hadoop;

Basi dati non relazionali

Altri strumenti

Architetture dei sistemi basati su Hadoop

Usando Hadoop è possibile realizzare architetture di tipo Lambda, descritte da Nathan Marz e James Warren. Questo tipo di architettura prevede dei flussi batch e dei flussi streaming in parallelo.

Distribuzioni di Hadoop

Sebbene sia possibile scaricare ed installare autonomamente tutti i software necessari per far funzionare un cluster Hadoop, in molti casi è preferibile usare una distribuzione nella quale sono già presenti ed installati tutti questi software. Il limite di questo approccio è che bisogna scrivere il doppio del codice. Per provare a superare questo limite, è stata proposta l'architettura Kappa, nella quale viene fatto tutto in streaming.

Tra le distribuzioni più note troviamo:

Bibliografia

Voci correlate

Collegamenti esterni

Controllo di autoritàGND (DE1022420135
  Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero