Hadoop - Introduzione all’architettura ed approcci applicativi

50
Introduzione all’architettura ed approcci applicativi Messina, 21/03/2015 Dario Catalano

Transcript of Hadoop - Introduzione all’architettura ed approcci applicativi

Page 1: Hadoop - Introduzione all’architettura ed approcci applicativi

Introduzione all’architettura ed approcci applicativi

Messina, 21/03/2015 Dario Catalano

Page 2: Hadoop - Introduzione all’architettura ed approcci applicativi

Qualcosa su di me…

Messina, 21/03/2015 Dario Catalano

[email protected]

Linkedin

Google+

Twitter

Page 3: Hadoop - Introduzione all’architettura ed approcci applicativi

Di cosa parleremo

Messina, 21/03/2015 Dario Catalano

• Cos’è Apache Hadoop?

• Un po’ di storia

• L’algoritmo Map-Reduce

• L’architettura

• Cloudera

• Esempio Applicativo

• Configurazione

• Amministrazione

• Sicurezza

• «Estensioni» di

Hadoop

• Bibliografia

Page 4: Hadoop - Introduzione all’architettura ed approcci applicativi

Cosa è Hadoop?

Messina, 21/03/2015 Dario Catalano

FrameworkCluster

BigData

MapReduce

DistribuitedFile System

API

Fault tollerant

Cloud

Scalable

Cost effective

Extensible

Flexibile

Java

Page 5: Hadoop - Introduzione all’architettura ed approcci applicativi

Un po’ di storia

Messina, 21/03/2015 Dario Catalano

2003 Google File System

Page 6: Hadoop - Introduzione all’architettura ed approcci applicativi

Un po’ di storia

Messina, 21/03/2015 Dario Catalano

2004 Google Map Reduce

Page 7: Hadoop - Introduzione all’architettura ed approcci applicativi

Un po’ di storia

Messina, 21/03/2015 Dario Catalano

2005

Doug Cutting Mike Cafarella

Page 8: Hadoop - Introduzione all’architettura ed approcci applicativi

Un po’ di storia

Messina, 21/03/2015 Dario Catalano

2006 2011 2013

Page 9: Hadoop - Introduzione all’architettura ed approcci applicativi

Map Reduce » Step I

Messina, 21/03/2015 Dario Catalano

Mapper

Mapper

Mapper

Mapper

Datas

Intermediate Datas

Record

Record

Record

Record

Record

Record

Record

Partitionated Datas

Record

Record

Record

Record

Record

Record

Record

Record

Record

Map Tasks

(K1,Va) (K2,Vb)(K3,Vc) (K4,Vd)(K5,Ve) (K6,Vf)

(K1,Vc) (K5,Vc)(K5,Vf) (K2,Vd)(K1,Ve) (K1,Vf)

(K3,Va) (K2,Va)(K1,Vc) (K7,Vd)(K2,Vb) (K3,Vf)

(K4,Va) (K2,Vb)(K8,Vc) (K7,Vf)(K2,Ve) (K5,Vf)

Page 10: Hadoop - Introduzione all’architettura ed approcci applicativi

Map Reduce » Step II

Messina, 21/03/2015 Dario Catalano

Intermediate Datas

(K1,Va) (K2,Vb)(K3,Vc) (K4,Vd)(K5,Ve) (K6,Vf)

(K1,Vc) (K5,Vc)(K5,Vf) (K2,Vd)(K1,Ve) (K1,Vf)

(K3,Va) (K2,Va)(K1,Vc) (K7,Vd)(K2,Vb) (K3,Vf)

(K4,Va) (K1,Vb)(K8,Vc) (K7,Vf)(K2,Ve) (K5,Vf)

K1 Va Ve

K2

K3

K4

Vf Vb

K5 Ve Vf Vc Vf

K6

K7 Vd

K8 Vc

Vc

Vb

Vc

Va Vd Ve Vb

Vc Va Vf

Vd Va

Vf

Vf

Intermediate DatasShuffle, Partitionig and Sorting

Page 11: Hadoop - Introduzione all’architettura ed approcci applicativi

Map Reduce » Step III

Messina, 21/03/2015 Dario Catalano

K1 Va Ve

K2

K3

K4

Vf Vb

K5 Ve Vf Vc Vf

K6

K7 Vd

K8 Vc

Vc

Vb

Vc

Va Vd Ve Vb

Vc Va Vf

Vd Va

Vf

Vf

Intermediate Datas

Reducer …Record

Record

Reducer …Record

Record

Reduce Tasks

Record

Record

Record

Record

Record

Record

Record

Record

Output Datas

Page 12: Hadoop - Introduzione all’architettura ed approcci applicativi

Map Reduce » Esempio

Messina, 21/03/2015 Dario Catalano

the, 3brown,2fox, 2how, 1now, 1

quick, 1ate, 1mouse, 1cow, 1

Page 13: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » Visione ad alto livello

Messina, 21/03/2015 Dario Catalano

HDFS MapReduce

Java Client

Page 14: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » HDFS

Messina, 21/03/2015 Dario Catalano

• Distribuito

• Master/Slave

• Blocchi solitamente >= 64 Mb (grande mole

di dati)

• Ridondante (3 copie)

• Facilmente scalabile

Page 15: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » HDFS

Messina, 21/03/2015 Dario Catalano

Page 16: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » HDFS » NameNode

Messina, 21/03/2015 Dario Catalano

• Ruolo Master

• Responsabile dei Metadata Struttura directory, file e relativi permessi Posizione dei blocchi Stato dei files Identità dei DataNode caricata al boot Filename dei blocchi nei fs locale dei DataNode

• Dati in memoria

Page 17: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » HDFS » Scrittura file

Messina, 21/03/2015 Dario Catalano

Page 18: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » HDFS » Lettura file

Messina, 21/03/2015 Dario Catalano

Page 19: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » HDFS » Secondary NameNode

Messina, 21/03/2015 Dario Catalano

Page 20: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » HDFS » Comandi

Messina, 21/03/2015 Dario Catalano

hadoop fs –cat file:///file2hadoop fs –mkdir /user/hadoop/dir1 /user/hadoop/dir2

hadoop fs –copyFromLocal <fromDir> <toDir>hadoop fs –put <localfile> hdfs://nn.example.com/hadoop/hadoopfile

hadoop fs –ls /user/hadoop/dir1hadoop fs –cat hdfs://nn1.example.com/file1hadoop fs –get /user/hadoop/file <localfile>sudo hadoop jar <jarFileName> <method> <fromDir> <toDir> 

Page 21: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » HDFS » Affidabilità

Messina, 21/03/2015 Dario Catalano

• DataNode Heartbeat

• Trade-off replicazione blocchi (1 locale e 2 in un altro rack)Fattore di replicazione configurabile per file (in heartbeat)

• Checksum dei blocchi

• Cancellazione: Trash directory (6 ore) » Cancellazione fisica

• NameNode collo di bottiglia in Hadoop 1.xDimensioni dei metadatiMancanza di replicazione

Page 22: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » Map Reduce v1

Messina, 21/03/2015 Dario Catalano

Page 23: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » Map Reduce v1

Messina, 21/03/2015 Dario Catalano

Page 24: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » Map Reduce v1

Messina, 21/03/2015 Dario Catalano

• Master / Slave

• TaskTracker:Creazione task slot-based JVM forkHeartbeat

• JobTracker: Responsabile/Gestore del JobColloquia con il NameNodeEffettua recovery di task fallitiPunto debole dell’architettura

Page 25: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » Master / Slave

Messina, 21/03/2015 Dario Catalano

• Hdfs e MapReduce nello stesso nodo = minore traffico di rete = maggiore performance

Page 26: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » YARN

Messina, 21/03/2015 Dario Catalano

• Container Unità computazionale Controlla CPU e RAM assegnate

• Node Manager Riceve richieste del RS (Slave) Gestisce ciclo vita dei container Gestisce logging e servizi ausiliari

• Resource Manager: Riceve richieste da AM Schedula con politiche variabili

(Fair, Capacity,…)

• Application Master Dipende dal tipo di applicazione Separazione delle responsabilità =

Scalabilità

Page 27: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » YARN

Messina, 21/03/2015 Dario Catalano

1. CL -> RM (inizio applicazione)

2. RM -> NM (richiesta nuovo AM)

3. AM -> RM (registrazione)4. AM -> RM (richiesta risorse)5. AM -> NM(s) (avvio

containers)6. CS -> AM (containers

eseguono il codice ed inviano checks)

7. CL -> AM (client chiede stato applicazione)

8. AM -> RM (shutdown)

Page 28: Hadoop - Introduzione all’architettura ed approcci applicativi

Architettura » YARN

Messina, 21/03/2015 Dario Catalano

Hadoop 1.x Hadoop 2.x

Tipo di elaborazione Solo Map Reduce Implementazioni multiple

Gestione delle risorsee delle elaborazioni Unica (JobTracker) Separata (ResourceManager e 

Application Master)

Scalabilità di HDFS Singolo NameNode HDFS Federation

Affidabilità di HDFS Singolo NameNode HDFS High Availability

Limite Nodi 4.000 10.000

Page 29: Hadoop - Introduzione all’architettura ed approcci applicativi

HostHostProcesso

Modalità di Esecuzione

Messina, 21/03/2015 Dario Catalano

Singolo Processo

NameNode

JobTracker

TaskTracker

Pseudo Distribuita

DataNode

SecondaryNameNode

Host

NN

JT

Host

DN

TT

M

Host

DN

TT

R

Distribuita

Page 30: Hadoop - Introduzione all’architettura ed approcci applicativi

Prima del codice…

Messina, 21/03/2015 Dario Catalano

• Servizi, architetture e formazione su Apache Hadoop

• Apache Main Contributor

• CDH (ClouderaDistribution with Hadoop)

Page 31: Hadoop - Introduzione all’architettura ed approcci applicativi

Cloudera Quickstart VM

Messina, 21/03/2015 Dario Catalano

• CDH 5 è basata su Linux Centos 6.4

• Contiene:HDFS, MapReduce, Hadoop Common, Hbase, Hive, Pig, Oozie, Sqoop, Flume, ZooKeeper, Hue, Whirr, Mahout, Cloudera Manager

• Disponibile per VMWare, KVM, Oracle Virtualbox

• Requisititi Minimi:4 Gb RAM (8 raccomandati)64 bit host OS

• Scaricabile da:http://www.cloudera.com/content/cloudera/en/downloads/quickstart_vms/

cdh-5-3-x.html

Page 32: Hadoop - Introduzione all’architettura ed approcci applicativi

Word Count API «vecchia»

Messina, 21/03/2015 Dario Catalano

import java.io.IOException;...import org.apache.hadoop.mapred.TextOutputFormat;

public class WordCountOldAPI {public static void main(String[] args) throws Exception {JobConf conf = new JobConf(WordCountOldAPI.class);conf.setJobName("wordcount");conf.setOutputKeyClass(Text.class);conf.setOutputValueClass(IntWritable.class);conf.setMapperClass(MyMapper.class);conf.setCombinerClass(MyReducer.class);conf.setReducerClass(MyReducer.class);conf.setNumReduceTasks(1);conf.setInputFormat(TextInputFormat.class);conf.setOutputFormat(TextOutputFormat.class);FileInputFormat.setInputPaths(conf, new Path(args[0]));FileOutputFormat.setOutputPath(conf, new Path(args[1]));JobClient.runJob(conf);}

Page 33: Hadoop - Introduzione all’architettura ed approcci applicativi

Word Count API «vecchia»

Messina, 21/03/2015 Dario Catalano

public static class MyMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {public void map(LongWritable key, Text value,OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {

output.collect(new Text(value.toString()), new IntWritable(1));}

}

public static class MyReducer extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {

int sum = 0;while (values.hasNext()) {

sum += values.next().get();}output.collect(key, new IntWritable(sum));

}}}

Page 34: Hadoop - Introduzione all’architettura ed approcci applicativi

La «nuova» API

Messina, 21/03/2015 Dario Catalano

• Introdotta con Hadoop 0.20 (2009)

• Nuovo package

• Più concisa e compatta

• Più pulita e leggibile

• Permette un controllo del Job più completo ed accurato

• Non confondere versione API con versione dell’architettura (1.x o 2.x)

Page 35: Hadoop - Introduzione all’architettura ed approcci applicativi

Word Count API «nuova»

Messina, 21/03/2015 Dario Catalano

import java.io.IOException;...import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;public class WordCountNewAPI {

public static void main(String[] args) throws Exception {Job job = Job.getInstance(new Configuration());job.setJarByClass(WordCountNewAPI.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);job.setMapperClass(MyMapper.class);job.setReducerClass(MyReducer.class);job.setInputFormatClass(TextInputFormat.class);job.setOutputFormatClass(TextOutputFormat.class);FileInputFormat.setInputPaths(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));boolean status = job.waitForCompletion(true);if (status) System.exit(0)else System.exit(1);

}

Page 36: Hadoop - Introduzione all’architettura ed approcci applicativi

Word Count API «nuova»

Messina, 21/03/2015 Dario Catalano

public static class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable> {public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

String w = value.toString();context.write(new Text(w), new IntWritable(1));

}}

public static class MyReducer extends Reducer<Text, IntWritable, Text, IntWritable> {public void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {

int sum = 0;for (IntWritable val : values) {sum += val.get();

}context.write(key, new IntWritable(sum));

}}

}

Page 37: Hadoop - Introduzione all’architettura ed approcci applicativi

E adesso…

Messina, 21/03/2015 Dario Catalano

…un po’ di pratica

Page 38: Hadoop - Introduzione all’architettura ed approcci applicativi

Configurazione

Messina, 21/03/2015 Dario Catalano

• Configurazione XML per ogni nodo• *‐default.xml nei JAR di Hadoop, *‐site.xml nella cartella di

configurazione• 4 tipi file principali: core‐*.xml hdfs‐*.xml mapred‐*.xml yarn‐*.xml

• Precedenza delle proprietà definite in varie posizioni: Oggetto Job o JobConf all’interno del codice File *‐site.xml all’interno del nodo Client File *‐site.xml all’interno del nodo Slave File *‐default.xml nei JAR (uguali in tutti i nodi)

Page 39: Hadoop - Introduzione all’architettura ed approcci applicativi

Amministrazione e Monitoring

Messina, 21/03/2015 Dario Catalano

• Command Line Interface

• Log files

• Interfacce Web per ogni processo

• YARN REST API

• JMX

• Manager Tools Cloudera Manager Ambari

Page 40: Hadoop - Introduzione all’architettura ed approcci applicativi

Sicurezza

Messina, 21/03/2015 Dario Catalano

• Inizialmente trascurata (solo dati pubblici)• Hadoop solo su reti private• Sviluppo software di terze parti: Cloudera Sentry, IBM InfoSphere Optim Data Masking, Intel's secure Hadoop

distribution, DataStax Enterprise, DataGuise for Hadoop,ecc.• Dalla versione 0.20.x: Autenticazione tra servizi Kerberos Autenticazione Web Console personalizzabile HDFS Permessi ed ACL Autenticazioni Token based per diminuire overhead Possibile crittazione delle connessioni

• Problemi ancora da risolvere HDFS non crittato Difficile integrazione in ambienti non Kerberos Regole di autorizzazione non sufficientemente flessibili Modello complessivo della sicurezza complicato

• Intel Project Rhino

Page 41: Hadoop - Introduzione all’architettura ed approcci applicativi

Estensioni

Messina, 21/03/2015 Dario Catalano

Page 42: Hadoop - Introduzione all’architettura ed approcci applicativi

HBase

Messina, 21/03/2015 Dario Catalano

• NoSql Datastore

• Chiavi multidimensionali

• Schema dinamico

• Obiettivo : massime performance

• Visione logica: Tabelle, righe, colonne e famiglie di colonne

Page 43: Hadoop - Introduzione all’architettura ed approcci applicativi

HIVE

Messina, 21/03/2015 Dario Catalano

• Database

• Data wharehouse e BI

• Linguaggio dichiarativo

• Tabelle -> File su HDFS

• SQL-like query -> MapReduce

• Tabelle (managed ed esterne), viste, partizioni, … = flessibilità organizzativa.

Page 44: Hadoop - Introduzione all’architettura ed approcci applicativi

Pig

Messina, 21/03/2015 Dario Catalano

• Scripting

• Data flow e Pipelining

• ETL oriented

• Linguaggio procedurale

• LOAD, FILTER, JOIN, GROUP, STORE,… = controllo del dato step by step

Page 45: Hadoop - Introduzione all’architettura ed approcci applicativi

HCatalog

Messina, 21/03/2015 Dario Catalano

• Integrazione di varie tecnologie Hadoopbased (HIVE, Pig, MapReduce)

• Astrazione per rendere uniformi BI e ETL

• REST API

Page 46: Hadoop - Introduzione all’architettura ed approcci applicativi

Sqoop

Messina, 21/03/2015 Dario Catalano

Page 47: Hadoop - Introduzione all’architettura ed approcci applicativi

HAMA

Messina, 21/03/2015 Dario Catalano

• Bulk SynchronousParallel

• Yarn-based

• Fasi Processing Exchange

Messages Barrier

Synchronization

Page 48: Hadoop - Introduzione all’architettura ed approcci applicativi

Spark

Messina, 21/03/2015 Dario Catalano

• Obiettivo performance(10x più veloce di MR)

• Scala based (Java, Scala, Python API)

• Resilient Distributed Dataset (Scala Seq)

• Hadoop, Mesos, Stand-alone

Page 49: Hadoop - Introduzione all’architettura ed approcci applicativi

Mahout

Messina, 21/03/2015 Dario Catalano

• Machine Learning (IA) Classificazione Clusterizzazione Fuzzy Logic Neural Network …

• Data Mininig

• 2 Fasi Apprendimento Applicazione

Page 50: Hadoop - Introduzione all’architettura ed approcci applicativi

Bibliografia

Messina, 21/03/2015 Dario Catalano

• Libri Pro Hadoop Second Edition, Sameer Wadkar, Madhu Siddalingaiah, Jason Venner , Apress Hadoop: The Definitive Guide Third Edition, Tom White, O’ Reilly

• Web Apache Hadoop Official Site, https://hadoop.apache.org/ What is Hadoop?, http://www-01.ibm.com/software/data/infosphere/hadoop/ Cloudera, http://www.cloudera.com/ Introduzione ad Hadoop, https://paolobernardi.wordpress.com/2011/10/09/introduzione-ad-

hadoop/ Introduction to Hadoop 2.0 and advantages of Hadoop 2.0,

http://www.edureka.co/blog/introduction-to-hadoop-2-0-and-advantages-of-hadoop-2-0/ The New Hadoop API 0.20.x, http://sonerbalkir.blogspot.it/2010/01/new-hadoop-api-020x.html Big Data Security: The Evolution of Hadoop’s Security Model,

http://www.infoq.com/articles/HadoopSecurityModel