Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con...

8
Indice generale Introduzione ...................................................................................... xiii Struttura del libro ....................................................................... xiii Cosa serve per questo libro ..........................................................xiv Lo scopo del libro ........................................................................xiv Convenzioni .................................................................................xv Codice degli esempi......................................................................xv Gli autori............................................................................................ xvii I revisori .............................................................................................. xix Capitolo 1 Per iniziare ...................................................................... 1 Una nota sulle versioni................................................................... 1 Panoramica su Hadoop .................................................................. 2 Componenti di Hadoop ................................................................ 3 Componenti comuni ................................................................ 4 Storage ..................................................................................... 4 Calcolo..................................................................................... 5 Meglio se insieme ..................................................................... 5 Hadoop 2: dov’è l’affare? ................................................................ 6 Storage in Hadoop 2................................................................. 6 Calcolo in Hadoop 2 ................................................................ 7 Distribuzioni di Apache Hadoop .................................................... 9 Un doppio approccio ....................................................................10 AWS: infrastruttura on demand di Amazon....................................10 Simple Storage Service (S3) .....................................................10 Elastic MapReduce (EMR) .....................................................10 Come iniziare ...............................................................................11 Cloudera QuickStart VM .........................................................11 Amazon EMR.........................................................................11

Transcript of Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con...

Page 1: Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con Apache Pig..... 129 Panoramica su Pig..... 130

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

Page 2: Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con Apache Pig..... 129 Panoramica su Pig..... 130

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

Page 3: Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con Apache Pig..... 129 Panoramica su Pig..... 130

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

Page 4: Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con Apache Pig..... 129 Panoramica su Pig..... 130

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

Page 5: Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con Apache Pig..... 129 Panoramica su Pig..... 130

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

Page 6: Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con Apache Pig..... 129 Panoramica su Pig..... 130

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

Page 7: Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con Apache Pig..... 129 Panoramica su Pig..... 130

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

Page 8: Introduzione xiii Gli autori xvii I revisori xix Capitolo ... · ix Capitolo 6 Analisi dei dati con Apache Pig..... 129 Panoramica su Pig..... 130

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