SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Utiliser Hadoop
en Perl avec
HadoopStreaming
le plus simple :
apprendre java
un language simple

facile à apprendre

relativement
répandu

commence à être
assez stable
et si je ne veux pas
apprendre ?
hadoop fournit une classe
HadoopStreaming pour lancer des jobs
hors de java

utilise STDIN et STDOUT pour
communiquer avec vos processus

prend 2 arguments principaux : un
programme de map, et un autre de reduce
etape 1 : importation des
données avec sqoop
/usr/bin/sqoop-import -m 64 

--connect jdbc:mysql://db_host/db_name

--username db_user --password db_password

--table db_table --hive-import

--hive-delims-replacement ' '

--null-string 'N' --null-non-string 'N'

--hive-overwrite

--hive-table db_table_name_in_hive

--split-by my_column
etape 1 : importation des
données avec sqoop
Les données vont être écrite sous forme
tabulaire dans HDFS,

dans /user/hive/warehouse/

db_table_whatever/part-000[0-9]{2}

Utilisable avec HiveQL directment

mais sinon : 

hadoop fs -put ./fichier.tsv /user/dmorel/
etape 2 : écriture des
scripts map + reduce
while ( <STDIN> ) {
chomp;
my @fields = split /t/;
# make the key
print join( '+', @fields[ ( 16, 25 ) ] );
# separate key and value
print "+t";
# make the value
print join(",",
@fields[ ( 28, 30, ... ) ] ) . "n";
}
le mapper peut être plus
«complexe» !
while ( <STDIN> ) {
chomp;
my @fields = split /t/;
# make the key
my $key = join( '+',
@fields[ ( 16, 25 ) ] , q{} );
# make the valueS
my @base_values = @fields[ ( 28 .. 150 ) ] );
my @final_vals = mybigcombinesub(@base_values);
for ( @final_values ) {
print $key, join(«t», @$_), «n»;
}
}
exemple d’utilisation
(ouf, pas de code...)
trouver les combinaisons de 3, 4, 5 objets ou +
les plus fréquemment achetées par les clients
d’un site e-commerce

impossible en SQL, trop de combinaisons,
jointures trop lourdes

facile avec Hadoop : juste produire toutes les
combinaisons pour chaque client
séquentiellement, réduire ensuite, et compter
reducer : analyser ligne à
ligne, vérifier le key switch
my ($k_prev, $processed_lines_in_key,
@output_lines, $value_to_print);
while (<STDIN>) {
chomp;
my ($key, $value) = split /t/;
if ( $k_main ne $k_prev ) {
$processed_lines_in_key = 0;
_flush_to_stdout(@output_lines);
$value_to_print = ''; $k_prev = $k_main;
}
$value_to_print .= $value;
push @output_lines, [ $k_main, $value_to_print ]
if (int (rand()*3) == 2);
}
etape 3 : test
/usr/bin/hadoop fs -cat 
/user/david/myfile.tsv
| head -10000
| ./mapper.pl
| sort
| ./reducer.pl
etape 4 : lancement de
hadoop
hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-*.jar

-D stream.map.output.field.separator='+' 
-D stream.num.map.output.key.fields=2 
-D map.output.key.field.separator='+' 
-D num.key.fields.for.partition=1 
-D mapred.text.key.partitioner.options=-k1 
-D mapred.compress.map.output=true 
-D
mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec 
-input /user/hive/warehouse/mytable/ 
-output myresult.tsv 
-mapper ./mapper.pl 
-reducer ./reducer.pl 
-file ./mapper.pl 
-file ./reducer.pl 
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner
/usr/bin/hadoop jar /usr/lib/
hadoop-0.20-mapreduce/contrib/
streaming/hadoop-streaming-*.jar
-D stream.map.output.field.separator='+' 
-D stream.num.map.output.key.fields=2 
-D map.output.key.field.separator='+' 
-D num.key.fields.for.partition=1 
-D mapred.text.key.partitioner.options=-k1 
-partitioner
org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner
-D mapred.compress.map.output=true 
-D
mapred.map.output.compression.codec=org.apache.had
oop.io.compress.SnappyCodec 
-input /user/hive/warehouse/mytable/ 
-output myresult.tsv 
-mapper ./mapper.pl 
-reducer ./reducer.pl 
-file ./mapper.pl 
-file ./reducer.pl
etape 5 : récupération
du fichier de sortie
hadoop fs -get
/user/dmorel/myresult.tsv
Facile, non ?
Questions ?
david.morel@amakuru.net

Más contenido relacionado

La actualidad más candente

Presentation des outils traitements distribues
Presentation des outils traitements distribuesPresentation des outils traitements distribues
Presentation des outils traitements distribuesLê Anh
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduceAmal Abid
 
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopCasablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopBenoît de CHATEAUVIEUX
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6Amal Abid
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Alexis Seigneurin
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : CassandraLilia Sfaxi
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocutionParis_Storm_UG
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceLilia Sfaxi
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5Amal Abid
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Stats web avec Hive chez Scoop.it
Stats web avec Hive chez Scoop.itStats web avec Hive chez Scoop.it
Stats web avec Hive chez Scoop.ithibnico
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : SparkLilia Sfaxi
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctionsMICHRAFY MUSTAFA
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2Amal Abid
 
Annexe Big Data
Annexe Big DataAnnexe Big Data
Annexe Big DataAmal Abid
 
Les bases BI sont-elles différentes?
Les bases BI sont-elles différentes?Les bases BI sont-elles différentes?
Les bases BI sont-elles différentes?Franck Pachot
 

La actualidad más candente (20)

Presentation des outils traitements distribues
Presentation des outils traitements distribuesPresentation des outils traitements distribues
Presentation des outils traitements distribues
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduce
 
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopCasablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
 
Tech day hadoop, Spark
Tech day hadoop, SparkTech day hadoop, Spark
Tech day hadoop, Spark
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocution
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
 
Chapitre 4 no sql
Chapitre 4 no sqlChapitre 4 no sql
Chapitre 4 no sql
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Stats web avec Hive chez Scoop.it
Stats web avec Hive chez Scoop.itStats web avec Hive chez Scoop.it
Stats web avec Hive chez Scoop.it
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctions
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
 
Annexe Big Data
Annexe Big DataAnnexe Big Data
Annexe Big Data
 
Les bases BI sont-elles différentes?
Les bases BI sont-elles différentes?Les bases BI sont-elles différentes?
Les bases BI sont-elles différentes?
 

Destacado

Dia medio ambiente_2012-_propuesta_y_pasos_a_seguir
Dia medio ambiente_2012-_propuesta_y_pasos_a_seguirDia medio ambiente_2012-_propuesta_y_pasos_a_seguir
Dia medio ambiente_2012-_propuesta_y_pasos_a_seguirlorena donoso toro
 
Plegable Biomol Mateo Torres
Plegable Biomol Mateo TorresPlegable Biomol Mateo Torres
Plegable Biomol Mateo Torresmateo torres
 
Las nic y la contabilidad creativa gjr, trabajo de grado publicado en revista
Las nic y la contabilidad creativa   gjr, trabajo de grado publicado en revistaLas nic y la contabilidad creativa   gjr, trabajo de grado publicado en revista
Las nic y la contabilidad creativa gjr, trabajo de grado publicado en revistaJubilado
 
Desenvolvimento de software tradicional vs ágil
Desenvolvimento de software tradicional vs ágilDesenvolvimento de software tradicional vs ágil
Desenvolvimento de software tradicional vs ágilCOTIC-PROEG (UFPA)
 
Ipsredu Solutions | Training Programs
Ipsredu Solutions | Training ProgramsIpsredu Solutions | Training Programs
Ipsredu Solutions | Training Programsipsrtraining
 
Lateral epi̇kondi̇li̇t tedavi̇si̇nde kullanilan eswt fi̇zi̇k tedavi̇ ve
Lateral epi̇kondi̇li̇t tedavi̇si̇nde kullanilan eswt fi̇zi̇k tedavi̇ veLateral epi̇kondi̇li̇t tedavi̇si̇nde kullanilan eswt fi̇zi̇k tedavi̇ ve
Lateral epi̇kondi̇li̇t tedavi̇si̇nde kullanilan eswt fi̇zi̇k tedavi̇ vefethiisnac
 
Scaling Tableau to the Enterprise: The Perks and Pitfalls of Tableau Server W...
Scaling Tableau to the Enterprise: The Perks and Pitfalls of Tableau Server W...Scaling Tableau to the Enterprise: The Perks and Pitfalls of Tableau Server W...
Scaling Tableau to the Enterprise: The Perks and Pitfalls of Tableau Server W...Senturus
 
Nms norton mobile_security_2
Nms norton mobile_security_2Nms norton mobile_security_2
Nms norton mobile_security_2silvamtt2003
 
Dark clouds over Clayton Valley and green lights for Belmont‘s Kibby Basin Pr...
Dark clouds over Clayton Valley and green lights for Belmont‘s Kibby Basin Pr...Dark clouds over Clayton Valley and green lights for Belmont‘s Kibby Basin Pr...
Dark clouds over Clayton Valley and green lights for Belmont‘s Kibby Basin Pr...Follow me on Twitter @Stockshaman
 
Esencia de amigos
Esencia de amigosEsencia de amigos
Esencia de amigosJorge Llosa
 
Multiprofessional social media communities: improving health and care - Naomi...
Multiprofessional social media communities: improving health and care - Naomi...Multiprofessional social media communities: improving health and care - Naomi...
Multiprofessional social media communities: improving health and care - Naomi...Innovation Agency
 
José miguel lópez frade impulsa no + vello
José miguel lópez frade impulsa no + velloJosé miguel lópez frade impulsa no + vello
José miguel lópez frade impulsa no + velloleopoldosoria
 
Presentacion tema 4
Presentacion tema 4Presentacion tema 4
Presentacion tema 4cefic
 
Estructura de métodos cualitativos
Estructura de métodos cualitativosEstructura de métodos cualitativos
Estructura de métodos cualitativosRafael Blanco
 
Spring Presentation '16
Spring Presentation '16Spring Presentation '16
Spring Presentation '16Amelia Hill
 
Insercion de las nuevas tecnologias
Insercion de las nuevas tecnologiasInsercion de las nuevas tecnologias
Insercion de las nuevas tecnologiastcardenas83
 

Destacado (20)

Dia medio ambiente_2012-_propuesta_y_pasos_a_seguir
Dia medio ambiente_2012-_propuesta_y_pasos_a_seguirDia medio ambiente_2012-_propuesta_y_pasos_a_seguir
Dia medio ambiente_2012-_propuesta_y_pasos_a_seguir
 
Plegable Biomol Mateo Torres
Plegable Biomol Mateo TorresPlegable Biomol Mateo Torres
Plegable Biomol Mateo Torres
 
Las nic y la contabilidad creativa gjr, trabajo de grado publicado en revista
Las nic y la contabilidad creativa   gjr, trabajo de grado publicado en revistaLas nic y la contabilidad creativa   gjr, trabajo de grado publicado en revista
Las nic y la contabilidad creativa gjr, trabajo de grado publicado en revista
 
20140826190111541
2014082619011154120140826190111541
20140826190111541
 
Desenvolvimento de software tradicional vs ágil
Desenvolvimento de software tradicional vs ágilDesenvolvimento de software tradicional vs ágil
Desenvolvimento de software tradicional vs ágil
 
Ipsredu Solutions | Training Programs
Ipsredu Solutions | Training ProgramsIpsredu Solutions | Training Programs
Ipsredu Solutions | Training Programs
 
Lateral epi̇kondi̇li̇t tedavi̇si̇nde kullanilan eswt fi̇zi̇k tedavi̇ ve
Lateral epi̇kondi̇li̇t tedavi̇si̇nde kullanilan eswt fi̇zi̇k tedavi̇ veLateral epi̇kondi̇li̇t tedavi̇si̇nde kullanilan eswt fi̇zi̇k tedavi̇ ve
Lateral epi̇kondi̇li̇t tedavi̇si̇nde kullanilan eswt fi̇zi̇k tedavi̇ ve
 
Vers la crise finale
Vers la crise finaleVers la crise finale
Vers la crise finale
 
Scaling Tableau to the Enterprise: The Perks and Pitfalls of Tableau Server W...
Scaling Tableau to the Enterprise: The Perks and Pitfalls of Tableau Server W...Scaling Tableau to the Enterprise: The Perks and Pitfalls of Tableau Server W...
Scaling Tableau to the Enterprise: The Perks and Pitfalls of Tableau Server W...
 
Nms norton mobile_security_2
Nms norton mobile_security_2Nms norton mobile_security_2
Nms norton mobile_security_2
 
Dark clouds over Clayton Valley and green lights for Belmont‘s Kibby Basin Pr...
Dark clouds over Clayton Valley and green lights for Belmont‘s Kibby Basin Pr...Dark clouds over Clayton Valley and green lights for Belmont‘s Kibby Basin Pr...
Dark clouds over Clayton Valley and green lights for Belmont‘s Kibby Basin Pr...
 
Esencia de amigos
Esencia de amigosEsencia de amigos
Esencia de amigos
 
Multiprofessional social media communities: improving health and care - Naomi...
Multiprofessional social media communities: improving health and care - Naomi...Multiprofessional social media communities: improving health and care - Naomi...
Multiprofessional social media communities: improving health and care - Naomi...
 
José miguel lópez frade impulsa no + vello
José miguel lópez frade impulsa no + velloJosé miguel lópez frade impulsa no + vello
José miguel lópez frade impulsa no + vello
 
Blog aimacaña
Blog aimacañaBlog aimacaña
Blog aimacaña
 
Presentacion tema 4
Presentacion tema 4Presentacion tema 4
Presentacion tema 4
 
Estructura de métodos cualitativos
Estructura de métodos cualitativosEstructura de métodos cualitativos
Estructura de métodos cualitativos
 
Spring Presentation '16
Spring Presentation '16Spring Presentation '16
Spring Presentation '16
 
Insercion de las nuevas tecnologias
Insercion de las nuevas tecnologiasInsercion de las nuevas tecnologias
Insercion de las nuevas tecnologias
 
1er concours v2
1er concours v21er concours v2
1er concours v2
 

Similar a Utiliser Hadoop en perl avec HadoopStreaming

DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8Aurelien Navarre
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP EL JAOUARI Ahmed
 
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )Hamza Ben Marzouk
 
Comment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on RailsComment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on RailsNovelys
 
Architecture PHP 3 tier avec Zend en backend de Drupal
Architecture PHP 3 tier avec Zend en backend de DrupalArchitecture PHP 3 tier avec Zend en backend de Drupal
Architecture PHP 3 tier avec Zend en backend de DrupalThomas Delerm
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) univalence
 
Css.more.or.less
Css.more.or.lessCss.more.or.less
Css.more.or.lessVISEO
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLHervé Leclerc
 
Php & My Sql
Php & My SqlPhp & My Sql
Php & My Sqlcecile59
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another frameworkLAHAXE Arnaud
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataArrow Group
 
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureBig Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureMicrosoft
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdfbibouechristian
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdfbibouechristian
 

Similar a Utiliser Hadoop en perl avec HadoopStreaming (20)

DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
 
Php cours
Php coursPhp cours
Php cours
 
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
 
Resume SGBDR
Resume SGBDRResume SGBDR
Resume SGBDR
 
Comment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on RailsComment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on Rails
 
Architecture PHP 3 tier avec Zend en backend de Drupal
Architecture PHP 3 tier avec Zend en backend de DrupalArchitecture PHP 3 tier avec Zend en backend de Drupal
Architecture PHP 3 tier avec Zend en backend de Drupal
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
Css.more.or.less
Css.more.or.lessCss.more.or.less
Css.more.or.less
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
 
Php & My Sql
Php & My SqlPhp & My Sql
Php & My Sql
 
Php & My Sql
Php & My SqlPhp & My Sql
Php & My Sql
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another framework
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big Data
 
Php1
Php1Php1
Php1
 
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureBig Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf
 
L'avenir de LAMP
L'avenir de LAMPL'avenir de LAMP
L'avenir de LAMP
 

Utiliser Hadoop en perl avec HadoopStreaming

  • 1. Utiliser Hadoop en Perl avec HadoopStreaming
  • 2. le plus simple : apprendre java un language simple facile à apprendre relativement répandu commence à être assez stable
  • 3. et si je ne veux pas apprendre ? hadoop fournit une classe HadoopStreaming pour lancer des jobs hors de java utilise STDIN et STDOUT pour communiquer avec vos processus prend 2 arguments principaux : un programme de map, et un autre de reduce
  • 4. etape 1 : importation des données avec sqoop /usr/bin/sqoop-import -m 64 
 --connect jdbc:mysql://db_host/db_name
 --username db_user --password db_password
 --table db_table --hive-import
 --hive-delims-replacement ' '
 --null-string 'N' --null-non-string 'N'
 --hive-overwrite
 --hive-table db_table_name_in_hive
 --split-by my_column
  • 5. etape 1 : importation des données avec sqoop Les données vont être écrite sous forme tabulaire dans HDFS,
 dans /user/hive/warehouse/
 db_table_whatever/part-000[0-9]{2} Utilisable avec HiveQL directment mais sinon : 
 hadoop fs -put ./fichier.tsv /user/dmorel/
  • 6. etape 2 : écriture des scripts map + reduce while ( <STDIN> ) { chomp; my @fields = split /t/; # make the key print join( '+', @fields[ ( 16, 25 ) ] ); # separate key and value print "+t"; # make the value print join(",", @fields[ ( 28, 30, ... ) ] ) . "n"; }
  • 7. le mapper peut être plus «complexe» ! while ( <STDIN> ) { chomp; my @fields = split /t/; # make the key my $key = join( '+', @fields[ ( 16, 25 ) ] , q{} ); # make the valueS my @base_values = @fields[ ( 28 .. 150 ) ] ); my @final_vals = mybigcombinesub(@base_values); for ( @final_values ) { print $key, join(«t», @$_), «n»; } }
  • 8. exemple d’utilisation (ouf, pas de code...) trouver les combinaisons de 3, 4, 5 objets ou + les plus fréquemment achetées par les clients d’un site e-commerce impossible en SQL, trop de combinaisons, jointures trop lourdes facile avec Hadoop : juste produire toutes les combinaisons pour chaque client séquentiellement, réduire ensuite, et compter
  • 9. reducer : analyser ligne à ligne, vérifier le key switch my ($k_prev, $processed_lines_in_key, @output_lines, $value_to_print); while (<STDIN>) { chomp; my ($key, $value) = split /t/; if ( $k_main ne $k_prev ) { $processed_lines_in_key = 0; _flush_to_stdout(@output_lines); $value_to_print = ''; $k_prev = $k_main; } $value_to_print .= $value; push @output_lines, [ $k_main, $value_to_print ] if (int (rand()*3) == 2); }
  • 10. etape 3 : test /usr/bin/hadoop fs -cat /user/david/myfile.tsv | head -10000 | ./mapper.pl | sort | ./reducer.pl
  • 11. etape 4 : lancement de hadoop hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-*.jar -D stream.map.output.field.separator='+' -D stream.num.map.output.key.fields=2 -D map.output.key.field.separator='+' -D num.key.fields.for.partition=1 -D mapred.text.key.partitioner.options=-k1 -D mapred.compress.map.output=true -D mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec -input /user/hive/warehouse/mytable/ -output myresult.tsv -mapper ./mapper.pl -reducer ./reducer.pl -file ./mapper.pl -file ./reducer.pl -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner
  • 13. -D stream.map.output.field.separator='+' -D stream.num.map.output.key.fields=2 -D map.output.key.field.separator='+' -D num.key.fields.for.partition=1 -D mapred.text.key.partitioner.options=-k1 -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner
  • 14. -D mapred.compress.map.output=true -D mapred.map.output.compression.codec=org.apache.had oop.io.compress.SnappyCodec -input /user/hive/warehouse/mytable/ -output myresult.tsv -mapper ./mapper.pl -reducer ./reducer.pl -file ./mapper.pl -file ./reducer.pl
  • 15. etape 5 : récupération du fichier de sortie hadoop fs -get /user/dmorel/myresult.tsv
  • 16. Facile, non ? Questions ? david.morel@amakuru.net