Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con...
Transcript of Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con...
Indice generale
Introduzione ......................................................................................xiiiStruttura del libro ....................................................................... xiiiCosa serve per questo libro ..........................................................xivLo scopo del libro ........................................................................xivConvenzioni .................................................................................xvCodice degli esempi ......................................................................xv
Gli autori ............................................................................................xvii
I revisori ..............................................................................................xix
Capitolo 1 Per iniziare ......................................................................1Una nota sulle versioni ................................................................... 1Panoramica su Hadoop .................................................................. 2Componenti di Hadoop ................................................................ 3
Componenti comuni ................................................................ 4Storage ..................................................................................... 4Calcolo ..................................................................................... 5Meglio se insieme ..................................................................... 5
Hadoop 2: dov’è l’affare? ................................................................ 6Storage in Hadoop 2 ................................................................. 6Calcolo in Hadoop 2 ................................................................ 7
Distribuzioni di Apache Hadoop .................................................... 9Un doppio approccio ....................................................................10AWS: infrastruttura on demand di Amazon ....................................10
Simple Storage Service (S3) .....................................................10Elastic MapReduce (EMR) .....................................................10
Come iniziare ...............................................................................11Cloudera QuickStart VM .........................................................11Amazon EMR .........................................................................11
vi Big Data con Hadoop
Utilizzare Elastic MapReduce ..................................................12Rendere Hadoop operativo .....................................................12L’interfaccia AWS a riga di comando ........................................14
Eseguire gli esempi .......................................................................15Elaborazione dei dati con Hadoop ................................................16
Perché Twitter? ........................................................................16Creare il primo dataset .............................................................16Accesso programmato con Python ...........................................19
Riepilogo .....................................................................................21
Capitolo 2 Storage .........................................................................23Funzionamento interno di HDFS .................................................23
Avvio del cluster .....................................................................24Replica dei blocchi ..................................................................25
Accedere al file system HDFS tramite riga di comando .................25Esplorare il file system HDFS ..................................................26
Proteggere i metadati del file system ..............................................27Il Secondary NameNode non ci salva ......................................28NameNode HA di Hadoop 2 ..................................................28Configurazione del client .........................................................29Come funziona un failover ......................................................29
Apache ZooKeeper: un file system diverso ....................................30Implementare un lock distribuito con ZNode sequenziali ........31Implementare l’adesione a un gruppo e l’elezione di un leader usando ZNode effimeri ........................................32API Java .................................................................................33Componenti ............................................................................33Per saperne di più ....................................................................33
Failover automatico dei NameNode ..............................................33Snapshot HDFS ...........................................................................34File system di Hadoop .................................................................36
Interfacce di Hadoop ..............................................................37Gestire e serializzare i dati .............................................................37
L’interfaccia Writable ...............................................................37Le classi wrapper ......................................................................38Classi wrapper per gli array ......................................................38Le interfacce Comparable e WritableComparable ....................39
Storage dei dati .............................................................................39Serializzazione e contenitori ....................................................39Compressione ..........................................................................39Formati di file general purpose ................................................40Formati di dati orientati alle colonne .......................................41
Riepilogo .....................................................................................45
vii
Capitolo 3 Elaborazione: MapReduce e oltre ...............................47MapReduce ..................................................................................47API Java per MapReduce ..............................................................48
La classe Mapper ......................................................................49La classe Reducer ...................................................................50La classe Driver ........................................................................51Combiner ................................................................................52Partizionamento dei file ...........................................................53Implementazione dei mapper e dei reducer forniti da Hadoop ..............................................................................54Condividere i dati di riferimento .............................................54
Scrivere programmi MapReduce .................................................55Come iniziare ..........................................................................55Eseguire gli esempi ..................................................................55WordCount, l’Hello World di MapReduce ...............................56Co-occorrenze di parole ..........................................................59Trending topic .........................................................................60Sentiment degli hashtag ...........................................................64Pulizia del testo con ChainMapper ..........................................67
Panoramica sull’esecuzione di un job di MapReduce ...................70Avvio ......................................................................................70Suddividere l’input ..................................................................71Assegnazione delle attività ........................................................71Avvio dell’attività .....................................................................71Monitorare il lavoro del JobTracker ..........................................72Input della classe Mapper ........................................................72Esecuzione del mapper ............................................................72Output del mapper e input del reducer ...................................73Input del reducer .....................................................................73Esecuzione del reducer ............................................................73Output del reducer ..................................................................73Chiusura ..................................................................................73Input/Output ..........................................................................74InputFormat e RecordReader .................................................74La classe InputFormat fornita da Hadoop .................................75La classe RecordReader fornita da Hadoop ..............................75OutputFormat e RecordWriter ...............................................75La classe OutputFormat fornita da Hadoop ..............................76SequenceFile ...........................................................................76
YARN .........................................................................................76L’architettura di YARN ...........................................................77Ciclo di vita di un’applicazione YARN ....................................78Pensare a livelli ........................................................................80Modelli di esecuzione ..............................................................80
viii Big Data con Hadoop
YARN nel mondo reale: il calcolo oltre MapReduce ....................81Il problema con MapReduce ...................................................81Tez ..........................................................................................81Apache Spark ..........................................................................84Apache Samza .........................................................................85YARN oggi e oltre ..................................................................86
Riepilogo .....................................................................................86
Capitolo 4 Computazione in tempo reale con Samza .................89Elaborazione degli stream con Samza ............................................89
Come funziona Samza .............................................................90L’architettura ad alto livello di Samza........................................90Il miglior amico di Samza: Apache Kafka ..................................91Integrazione con YARN ..........................................................92Un modello indipendente .......................................................93Hello Samza! ...........................................................................93Creare un job di parsing di un tweet ........................................94Il file di configurazione ............................................................95Portare i dati di Twitter in Kafka ..............................................97Eseguire un job di Samza ........................................................98Samza e HDFS ........................................................................99Windowing .............................................................................99Flussi di lavoro con più job ....................................................101Sentiment analysis dei tweet ...................................................102Attività stateful .....................................................................107
Riepilogo ...................................................................................110
Capitolo 5 Computazione iterativa con Spark ...........................111Apache Spark ..............................................................................112
Computazione dei cluster con i working set...........................112Distribuzione .........................................................................114Iniziare con Spark ..................................................................115Scrivere ed eseguire applicazioni standalone ..........................116
L’ecosistema di Spark ..................................................................119Spark Streaming ...................................................................119GraphX .................................................................................119MLlib ....................................................................................119Spark SQL .............................................................................120
Elaborare i dati con Apache Spark ...............................................120Costruire ed eseguire gli esempi ............................................120Elaborazione dei dati sugli stream ...........................................123Analisi dei dati con Spark SQL ..............................................125
Spark e Samza Streaming a confronto ..........................................127Riepilogo ...................................................................................128
ix
Capitolo 6 Analisi dei dati con Apache Pig .................................129Panoramica su Pig .......................................................................130Per iniziare ..................................................................................131Eseguire Pig ................................................................................131
Grunt, la shell interattiva di Pig ..............................................132Fondamenti di Apache Pig ..........................................................133Programmare Pig ........................................................................135
Tipi di dati di Pig ..................................................................135Funzioni di Pig ......................................................................136Lavorare con i dati .................................................................138
Estendere Pig (UDF) ..................................................................141Repository di UDF ...............................................................141
Analizzare lo stream di Twitter.....................................................142Prerequisiti ............................................................................142Esplorazione del dataset .........................................................142Metadati dei tweet .................................................................143Preparazione dei dati..............................................................143Statistiche top n ....................................................................144Manipolazione di datetime.....................................................146Catturare le interazioni dell’utente .........................................147Analisi dei link .......................................................................149Utenti influenti ......................................................................150
Riepilogo ...................................................................................153
Capitolo 7 Hadoop e SQL .............................................................155Perché SQL su Hadoop ..............................................................156
Altre soluzioni SQL su Hadoop .............................................156Prerequisiti .................................................................................156
Panoramica su Hive ...............................................................158La natura delle tabelle di Hive ................................................160
L’architettura di Hive ..................................................................160Tipi di dati ............................................................................161Istruzioni DDL ......................................................................161Formati di file e storage .........................................................163Query ...................................................................................167Strutturare le tabelle di Hive per i vari carichi di lavoro ..........169Partizionare una tabella ..........................................................169Scrivere degli script ...............................................................175
Hive e Amazon Web Services ......................................................175Hive e S3 ..............................................................................175Hive su Elastic MapReduce ...................................................177
Estendere HiveQL ......................................................................177Interfacce programmatiche ..........................................................179
JDBC ....................................................................................179Thrift ....................................................................................181
x Big Data con Hadoop
L’iniziativa Stinger .......................................................................182Impala ........................................................................................183
L’architettura di Impala ..........................................................184Coesistenza con Hive .............................................................184Una filosofia diversa ...............................................................185Drill, Tajo e oltre....................................................................186
Riepilogo ...................................................................................186
Capitolo 8 Gestione del ciclo di vita dei dati ..............................189Cos’è la gestione del ciclo di vita dei dati ....................................189
Importanza della gestione del ciclo di vita dei dati ..................190Strumenti di supporto ............................................................190
Costruire la capacità per l’analisi dei tweet ..................................190Ottenere i dati dei tweet ........................................................191Oozie ....................................................................................191Produrre dati derivati .............................................................204
Le sfide dei dati esterni ...............................................................209Validazione dei dati ................................................................210Gestire le modifiche al formato ..............................................211Gestire l’evoluzione dello schema con Avro ............................211
Raccogliere dati supplementari ...................................................216Programmare i workflow .......................................................216Altri trigger di Oozie ............................................................218
Assemblare il tutto ......................................................................219Altri strumenti di supporto ....................................................219
Riepilogo ...................................................................................220
Capitolo 9 Facilitare il lavoro di sviluppo ...................................221Scegliere un framework...............................................................221Hadoop Streaming ......................................................................222
Conteggio delle parole in streaming in Python .......................223Differenze tra i job quando si usa lo streaming .......................225Trovare parole importanti nel testo .........................................225
Kite Data ....................................................................................231Data Core..............................................................................231Data HCatalog .......................................................................232Data Hive ..............................................................................233Data MapReduce ..................................................................233Data Spark .............................................................................233Data Crunch .........................................................................233
Apache Crunch ..........................................................................234Per iniziare ............................................................................235Concetti ................................................................................235Serializzazione dei dati ...........................................................236Pattern di elaborazione dei dati ..............................................237
xi
Implementazione ed esecuzione delle pipeline .......................238Esempi di Crunch .................................................................239Kite Morphlines ....................................................................243
Riepilogo ...................................................................................250
Capitolo 10 Eseguire un cluster Hadoop .....................................251Sono uno sviluppatore, le operations non mi interessano! ............251
Best practice per Hadoop e DevOps .....................................252Cloudera Manager ......................................................................252
Pagare o non pagare? .............................................................253Gestione dei cluster con Cloudera Manager ...........................253Monitorare con Cloudera Manager ........................................254API Cloudera Manager ..........................................................255Il lock-in di Cloudera Manager ............................................255
Ambari, l’alternativa open source ...............................................256Le operations nel mondo di Hadoop 2 ........................................256Condividere le risorse .................................................................258Costruire un cluster fisico ...........................................................258
Layout fisico ..........................................................................259Costruire un cluster su EMR ......................................................261
Considerazioni sui file system ................................................262Ottenere i dati in EMR .........................................................262Istanze di EC2 e raffinamento ................................................263
Raffinamento dei cluster .............................................................263Considerazioni sulla JVM ......................................................263Ottimizzazione di map e reduce ...........................................264
Sicurezza.....................................................................................264Evoluzione del modello di sicurezza di Hadoop .....................265Oltre l’autorizzazione di base .................................................265Il futuro della sicurezza di Hadoop .........................................266Conseguenze dell’uso di un cluster protetto ...........................266
Monitorare .................................................................................267Hadoop, dove i fallimenti non contano ..................................267Monitoraggio integrato .........................................................267Metriche a livello di applicazione ...........................................268
Risoluzione dei problemi ............................................................268Livelli di log ..........................................................................269Accedere ai logfile .................................................................270ResourceManager, NodeManager e Application Manager ......272NameNode e DataNode ........................................................279
Riepilogo ...................................................................................279
Capitolo 11 Come proseguire ........................................................283Distribuzioni alternative ..............................................................284
Distribuzione di Cloudera per Hadoop ..................................284Hortonworks Data Platform ..................................................285
xii Big Data con Hadoop
MapR ...................................................................................285E il resto… ............................................................................286Scegliere una distribuzione ....................................................286
Altri framework di calcolo ..........................................................286Apache Storm .......................................................................286Apache Giraph ......................................................................287Apache HAMA .....................................................................287
Altri progetti interessanti .............................................................287HBase....................................................................................287Sqoop ....................................................................................288Whirr ....................................................................................288Mahout .................................................................................289Hue .......................................................................................289
Altre astrazioni di programmazione .............................................291Cascading ..............................................................................291
Risorse per gli AWS ....................................................................292SimpleDB e DynamoDB .......................................................292Kinesis ...................................................................................292Data Pipeline .........................................................................293
Fonti di informazione .................................................................293Codice sorgente.....................................................................293Mailing list e forum ...............................................................293Gruppi di LinkedIn ...............................................................294HUG ....................................................................................294Conferenze ............................................................................294
Riepilogo ...................................................................................294
Indice analitico..................................................................................295