Présentation Conférence "Bigdata Niort"
Hadoop, prêt pour l’entreprise
Après une introduction à Hadoop, son historique et son écosystème, il s’agira de découvrir de quelle manière cette technologie est prête pour l’entreprise.
Les utilisations d’Hadoop sont déjà très nombreuses et ce dans de nombreux secteurs ; cette technologie, qui pourrait effrayer, sait se fondre au système d’information des organisations de grâce à sa richesse, et aux types de traitements qui peuvent s’y exécuter. De même, la variété de solutions qui composent le monde Hadoop permet à chacun de démarrer à son rythme pour pouvoir progresser et tirer partie de toutes les données qui nous entourent, les transformant en information et enfin en connaissances.
http://www.bigdata-niort.fr/charly-clairmont/
Présentation Conférence "Bigdata Niort"
Hadoop, prêt pour l’entreprise
Après une introduction à Hadoop, son historique et son écosystème, il s’agira de découvrir de quelle manière cette technologie est prête pour l’entreprise.
Les utilisations d’Hadoop sont déjà très nombreuses et ce dans de nombreux secteurs ; cette technologie, qui pourrait effrayer, sait se fondre au système d’information des organisations de grâce à sa richesse, et aux types de traitements qui peuvent s’y exécuter. De même, la variété de solutions qui composent le monde Hadoop permet à chacun de démarrer à son rythme pour pouvoir progresser et tirer partie de toutes les données qui nous entourent, les transformant en information et enfin en connaissances.
http://www.bigdata-niort.fr/charly-clairmont/
Hubert Stefani de la société Infotel nous parlera de clusterisation dans le domaine de la propriété intellectuelle. Partant d’un existant sous MongoDB, Infotel a mis en place un mécanisme de classification au travers d’un MapReduce très spécifique exploitant les méta-informations des documents, un google-like de la littérature scientifique en quelques sorte. Hubert présentera également des initiatives autour de Hadoop et ElasticSearch.
HDFS HA : Stockage à haute disponibilité par Damien HardyOlivier DASINI
Jusqu'alors dans HDFS, NameNode etait un élément critique difficile à fiabiliser. Hadoop 2 et donc CDH4 introduisait HDFS HA. CDH4.1 élimine tous les SPOF. Nous verrons comment mettre en place la haute disponibilité dans HDFS. Quels sont les nouveaux services, comment les articuler.
http://fr.viadeo.com/fr/profile/damien.hardy8
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Modern Data Stack France
Hadoop User Group du lundi 6 oct 2014:
Talk #3: Administration Hadoop et retour d’expérience BI avec Impala, limites et recommandations par Abed Ajraou et Cherif Tifrani de Solocal (Pages Jaunes).
Hadoop est un framework 100% open source,écrit en Java et géré par la fondation Apache
Hadoop est capable de stocker et traiter de manière efficace un grand nombre de donnés, en reliant plusieurs serveurs banalisés entre eux pour travailler en parallèle
Rapide introduction à Hadoop lors du lancement du Casablanca Hadoop & Big Data Meetup.
En partenariat avec Hortonworks
http://www.meetup.com/Casablanca-Hadoop-et-Big-Data-Meetup
Hortonworks est l'éditeur d'Hortonworks Data Platform (HDP), une plate-forme de données basée sur Hadoop qui comprend entre autres les systèmes Hadoop Distributed File System (HDFS), Hadoop MapReduce, Apache Pig, Apache Hive, Apache HBase et Apache ZooKeeper.
Hubert Stefani de la société Infotel nous parlera de clusterisation dans le domaine de la propriété intellectuelle. Partant d’un existant sous MongoDB, Infotel a mis en place un mécanisme de classification au travers d’un MapReduce très spécifique exploitant les méta-informations des documents, un google-like de la littérature scientifique en quelques sorte. Hubert présentera également des initiatives autour de Hadoop et ElasticSearch.
HDFS HA : Stockage à haute disponibilité par Damien HardyOlivier DASINI
Jusqu'alors dans HDFS, NameNode etait un élément critique difficile à fiabiliser. Hadoop 2 et donc CDH4 introduisait HDFS HA. CDH4.1 élimine tous les SPOF. Nous verrons comment mettre en place la haute disponibilité dans HDFS. Quels sont les nouveaux services, comment les articuler.
http://fr.viadeo.com/fr/profile/damien.hardy8
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Modern Data Stack France
Hadoop User Group du lundi 6 oct 2014:
Talk #3: Administration Hadoop et retour d’expérience BI avec Impala, limites et recommandations par Abed Ajraou et Cherif Tifrani de Solocal (Pages Jaunes).
Hadoop est un framework 100% open source,écrit en Java et géré par la fondation Apache
Hadoop est capable de stocker et traiter de manière efficace un grand nombre de donnés, en reliant plusieurs serveurs banalisés entre eux pour travailler en parallèle
Rapide introduction à Hadoop lors du lancement du Casablanca Hadoop & Big Data Meetup.
En partenariat avec Hortonworks
http://www.meetup.com/Casablanca-Hadoop-et-Big-Data-Meetup
Hortonworks est l'éditeur d'Hortonworks Data Platform (HDP), une plate-forme de données basée sur Hadoop qui comprend entre autres les systèmes Hadoop Distributed File System (HDFS), Hadoop MapReduce, Apache Pig, Apache Hive, Apache HBase et Apache ZooKeeper.
Recherche full-text et recommandation, deux mondes à part? Nous verrons qu’il est possible de marier Lucene (Elastic Search/Solr) et filtrage collaboratif afin de produire un système de recommandation flexible et scalable. Cela passera par un aperçu des dernières sorties : la plateforme Confluent (Kafka) ainsi que Mahout 0.10 (avec Samsara).
Matthieu Blanc présentera spark.ml. En effet, la version 1.2 de Spark a introduit ce nouveau package qui fournit une API de haut niveau permettant la création de pipeline de machine learning. Nous verrons ensemble les concepts de base de cet API à travers un exemple.
http://hugfrance.fr/spark-meetup-a-la-sg-avec-cloudera-xebia-et-influans-le-jeudi-11-juin/
Spark meetup www.meetup.com/Paris-Spark-Meetup/events/222607538/
La dernière version de Spark nous apporte une nouvelle API inspirée des librairies et langage d'analyse statistique. Nous verrons comment Spark Dataframe nous permet de simplement manipuler et explorer les données en conservant la scalabilité de Spark RDD
Talk at Hug FR on December 4, 2012 about the new Apache Drill project. Notably, this talk includes an introduction to the converging specification for the logical plan in Drill.
Paris Spark Meetup (Feb2015) ccarbone : SPARK Streaming vs Storm / MLLib / Ne...Cedric CARBONE
Présentation de la technologie Spark et exemple de nouveaux cas métiers pouvant être traités par du BigData temps réel par Cédric Carbone
-Spark vs Hadoop MapReduce (& Hadoop v2 vs Hadoop v1)
-Spark Streaming vs Storm
-Le Machine Learning avec Spark
-Use case métier : NextProductToBuy
Retour d'expérience du métier d'architecte logicielMik_Arber
Mener à bien un développement logiciel est une tâche très difficile et cela pour de multiple raisons. Une majorité de projets rencontrent des problèmes importants sur la qualité, les coûts, les délais, les performances etc… L’architecte logiciel peut avoir un impact direct ou indirect sur ces enjeux.
Malheureusement, le terme architecte logiciel est très souvent galvaudé par une vision simpliste du poste. A contrario, connaître sa richesse permet d’améliorer, de manière importante, la bonne marche des projets.
Ensemble nous allons voir les principaux enjeux de la production logicielle et comment l’architecte peut apporter sa plus-value. Plusieurs exemples concrets viendront illustrer ces problématiques.
Pour finir une méthode de travail, centrée sur l’architecte, sera exposée de manière chronologique, cela aidant à la maîtrise de la création de logiciel.
Les slides de la présentation faite par CIO Informatique Industrielle lors du salon Synergie NTIC, sur les utilisations de Linux en contexte embarqué et industriel
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
Retour d'expérience sur les pratiques que j'utilise au quotidien pour l'industrialisation de mes développements WordPress...
https://lyon.wordcamp.org/2015/session/wordpress-git-et-lintegration-continue/
Comment développer un serveur métier en python/C++cppfrug
Quelles sont les problématiques d'interfaçage, les avantages/inconvénients des langages, la stratégie de code, etc. dans le développement d'un serveur métier ?
Yocto une solution robuste pour construire des applications à fort contenu ap...Christian Charreyre
Ce document est la présentation effectuée par CIO Informatique Industrielle lors de la conférence "Yocto et Linux, un couple d'avenir" du salon RTS 2013
GWT est une techno qui permet de coder dans le même langage côté client et serveur, alors pourquoi utiliser des objets différents ? Ce quickie cherche à présenter comment lever les contraintes techniques pour écrire moins de code.
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
Votre mission, si vous l'acceptez : collecter chez chaque client 500 métriques par seconde sur un réseau Modbus, stocker plusieurs jours de données localement, et pousser des métriques sous échantillonnées dans le cloud. Les contraintes incluent la remontée des contextes de défaut, l’envoi de commande sécurisée depuis le cloud, l’isolation des données entre clients, la connexion temps réel via websocket, la gestion des coupures de courant et d’internet. Le système tourne sur une PINE64, avec une base de donnée open source française !
git est un outil essentiel pour la gestion des versions des codes sources des projets informatiques pour les développeurs travaillant en équipe comme ceux qui travaillent depuis plusieurs ordinateurs à la fois.
Utilisé conjointement à des systèmes d'intégration continue, il permet de générer des tests automatiques, des binaires, des versions de production comme de test de logiciels avec un minimum d'action de la part des développeurs.
Cependant il faut quand même maîtriser ses bases pour en tirer le meilleur : savoir comment gérer des branches, les commit et les fichiers qui doivent se trouver dans un "projet git".
Il est également bien de savoir créer et participer à des projets open source pour partager ses connaissances et compétences avec la communauté de développeurs. git est très utile pour accéder à GitHub et d'autres outils de stockage de sources et de gestion de projets logiciels.
Lors de cette présentation proposée le 22 décembre 2020, Patrick Prémartin explique le fonctionnement de base de git et comment s'en servir conjointement à l'IDE de RAD Studio utilisé pour du développement Delphi comme C++Builder.
Rediffusion de cette présentation et liens complémentaires sur https://serialstreameur.fr/webinaire-20201222.php
Ce slideshow est issu de la contribution de CIO Informatique Industrielle à la conférence / débat Comment travailler avec les logiciels Open Source, qui s'est tenue en Avril 2008 sur le salon RTS Embedded Systems
FinOps Data - FR - par Matthieu Rousseau & Ismael Goulani
Matthieu Rousseau, CEO & Data Engineer Modeo.
Ismael Goulani, CTO & Data Engineer Modeo.
Retour sur le premier prix dans la catégorie "Solution Innovante" du challenge #LaNuitdelaData avec leur solution Stach, plateforme qui aide les équipes Data à mieux comprendre l'utilisation des données par les "consumers", son coût, et son impact carbone.
Dremio, une architecture simple et performance pour votre data lakehouse.
Dans le monde de la donnée, Dremio, est inclassable ! C’est à la fois une plateforme de diffusion des données, un moteur SQL puissant basé sur Apache Arrow, Apache Calcite, Apache Parquet, un catalogue de données actif et aussi un Data Lakehouse ouvert ! Après avoir fait connaissance avec cette plateforme, il s’agira de préciser comment Dremio aide les organisations à relever les défis qui sont les leurs en matière de gestion et gouvernance des données facilitant l’exécution de leurs analyses dans le cloud (et/ou sur site) sans le coût, la complexité et le verrouillage des entrepôts de données.
Tomer Shiran est le fondateur et chef de produit (CPO) de Dremio. Tomer était le 4e employé et vice-président produit de MapR, un pionnier de l'analyse du Big Data. Il a également occupé de nombreux postes de gestion de produits et d'ingénierie chez IBM Research et Microsoft, et a fondé plusieurs sites Web qui ont servi des millions d'utilisateurs. Il est titulaire d'un Master en génie informatique de l'Université Carnegie Mellon et d'un Bachelor of Science en informatique du Technion - Israel Institute of Technology.
Le Modern Data Stack meetup est ravi d'accueillir Tomer Shiran. Depuis Apache Drill, Apache Arrow maintenant Apache Iceberg, il ancre avec ses équipes des choix pour Dremio avec une vision de la plateforme de données “ouverte” basée sur des technologies open source. En plus, de ces valeurs qui évitent le verrouillage de clients dans des formats propriétaires, il a aussi le souci des coûts qu’engendrent de telles plateformes. Il sait aussi proposer un certain nombre de fonctionnalités qui transforment la gestion de données grâce à des initiatives telles Nessie qui ouvre la route du Data As Code et du transactionnel multi-processus.
Le Modern Data Stack Meetup laisse “carte blanche” à Tomer Shiran afin qu’il nous partage son expérience et sa vision quant à l’Open Data Lakehouse.
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...Modern Data Stack France
Construire le cluster le plus rapide pour l'analyse des datas : benchmarks sur un régresseur par Christopher Bourez (Axa Global Direct)
Les toutes dernières technologies de calcul parallèle permettent de calculer des modèles de prédiction sur des big datas en des temps records. Avec le cloud est facilité l'accès à des configurations hardware modernes avec la possibilité d'une scalabilité éphémère durant les calculs. Des benchmarks sont réalisés sur plusieurs configuration hardware, allant de 1 instance à un cluster de 100 instances.
Christopher Bourez, développeur & manager expert en systèmes d'information modernes chez Axa Global Direct. Alien thinker. Blog : http://christopher5106.github.io/
HUG France Feb 2016 - Migration de données structurées entre Hadoop et RDBMS ...Modern Data Stack France
Migration de données structurées entre Hadoop et RDBMS par Louis Rabiet (Squid Solution)
Avec l'extraction de données stockées dans une base de données relationnelle à l'aide d'un outil de BI avancé, et avec l'envoi via Kafka des données vers Tachyon, plusieurs sessions Spark peuvent travailler sur le même dataset en limitant la duplication. On obtient grâce à cela une communication à coût contrôlé entre la base de données d'origine et Spark ce qui permet de réintroduire de manière dynamique les données modifiées avec MLlib tout en travaillant sur des données à jour. Les résultats préliminaires seront partagés durant cette présentation.
Système de recommandations de produits sur un site marchand par Koby KARP, Data Scientist (Equancy) & Hervé MIGNOT, Partner at Equancy
La recommandation reste un outil clé pour la personnalisation des sites marchands et le sujet est loin d’être épuisé. La prise en compte de la particularité d’un marché peut nécessité d’adapter le traitement et les algorithmes utilisés. Après une revue des techniques de recommandations, nous présenterons la démarche spécifique que nous avons adopté. Le système a été développé sous Spark pour la préparation des données et le calcul des modèles de recommandations. Une API simple et son service ont été développé pour délivrer les recommandations aux applications clientes.
L'approche Model as Code par Benoit Grossin (EDF-R&D) et Matthieu Vautrot (Quantmetry)
La mise en production de modèles est une étape charnière du cycle de vie d’un projet Data Science mené au sein d’une entreprise.
On observe que cette partie est encore rarement industrialisée alors qu’elle est indispensable pour l’exploitation continue des résultats des modèles.
Lorsque qu’un modèle finalisé présente un pouvoir prédictif satisfaisant en phase de développement, l'industrialisation de sa mise en production permet de le déployer et de l’exploiter de manière continue et automatique et ce, en minimisant la charge de travail.
Notre intervention présentera notre retour d'expérience dans le contexte EDF sur la mise en place d'une approche capable de raccourcir voire d'annuler le temps de mise en production dans un environnement Hadoop et plus particulièrement Hive.
Benoit Grossin est Ingénieur de Recherche chez EDF-R&D ICAM
Matthieu Vautrot est Consultant Analytics & Big Data chez Quantmetry
Industrialisation des processus Big Data chez CANAL+ par Pascal PERISSEAU et Stephen CLAIRVILLE (CanalPlus)
L'intégration de la brique technique Big Data au sein d'une architecture décisionnelle déjà existante. Retour d’expérience sur les développements réalisés afin de faciliter l’intégration, la supervision, et l’exploitation des flux Hadoop dans notre écosystème décisionnel / présentation de la phase préparatoire de la mise à disposition des données aux data analysts et data scientists.
Pascal PERISSEAU, responsable technique du pôle décisionnel et Big Data chez CANAL+ depuis 10 ans
Stephen CLAIRVILLE, chef de projet tech. lead Big Data depuis 2 ans chez CANAL+
Presentation faite lors du Hadoop User Group France du 14 janvier 2016.
L’analytique temps réel avec Riak et Spark par Michael Carney (Basho) et Olivier Girardot de Lateral Thoughts
Selon un rapport de Salesforce, le nombre de sources de données analysées par les entreprises progressera de 83% au cours des cinq prochaines années, ainsi les organisations veulent désormais fournir des connaissances en temps réel même sur les appareils mobiles. Le traitement temps réel est donc, le futur de l’analyse big data.
Ce talk présentera des nouveautés en matière de l’analyse temps réel autour de la famille SGBD Riak et Spark.
Michael Carney est le Directeur Commercial de Basho pour le Sud d’Europe. Fondateur de MySQL France et de MariaDB, Michael a rejoint Basho en janvier 2015 pour explorer le monde de données sans tables !
Olivier Girardot est le CTO de Lateral Thoughts, il est développeur et formateur au sujet de Spark et également spécialiste de Java/Python dans le domaine de la finance de marché.
HUG France : HBase in Financial Industry par Pierre Bittner (Scaled Risk CTO)Modern Data Stack France
HBase in Financial Industry par Pierre Bittner (Scaled Risk CTO)
Le traitement et l’analyse de grand volume de données sont au cœur des activités des banques. Bon nombre d’acteurs des marchés financiers ont déjà adopté Hadoop sur de nombreux cas d’usage : gestion des risques, identification des opportunités commerciales, détection de fraude, surveillance des marchés…
Une incroyable diversité de format doit être gérée. De ce point de vue, HBase est un choix naturel de base de données distribuée grâce à son modèle de donnée dynamique.
Après une présentation générale des caractéristiques d’HBase, ce talk présente comment modéliser les informations traitées pour s’adapter à différents contextes d’utilisation.
Pierre Bittner est le CTO de Scaled Risk, éditeur d’une plateforme Big Data dédiée aux institutions financières. Scaled Risk est bâtie sur HBase. Pierre intervient depuis 10 ans sur les SI bancaires.
Démarrer rapidement avec Apache Flink par Bilal Baltagi
- Présentation de l'éco Système Apache Flink
- Prise en main rapide
Bilal Baltagi a obtenu un master en analyse des données à l'Université Paris Nord - Paris 13. Il est actuellement consultant décisionnel chez Sarenza à Paris. Il intervient sur toutes les phases d'un projet décisionnel et Big data: recueil des besoins, conceptions, réalisations et accompagnement des utilisateurs. Bilal est de plus en plus intéressé à l'intersection de la Big Data avec la Business Intelligence et aime jouer avec Apache Flink!
Datalab 101 (Hadoop, Spark, ElasticSearch) par Jonathan Winandy - Paris Spark...Modern Data Stack France
Datalab 101 (Hadoop, Spark, ElasticSearch) par Jonathan Winandy
Retour d'expérience sur la mise en place d'un Datalab avec Hadoop, Spark et ElasticSearch dans un environnement contraint. Nous allons exposer les méthodes qui nous ont permis d'améliorer la conception, le développement, les performances et la recette d'une application complexe en Spark.
Jonathan Winandy est MOE, développeur Java/Scala spécialisé dans les pipelines de données.
Record linkage, a real use case with spark ml - Paris Spark meetup Dec 2015Modern Data Stack France
Record Linkage, un cas d’utilisation en Spark ML par Alexis Seigneurin
Le Record Linkage est le process qui consiste à trouver, dans un data set, les enregistrements qui représentent la même entité. Cette opération est particulièrement compliquée quand, comme nous, vous travaillez avec des données anonymisées. C’est là que le Machine Learning vient en renfort ! Nous avons implémenté un algorithme de Record Linkage en Spark SQL (DataFrames) et Spark ML plutôt que d’utiliser des règles statiques. Nous verrons le process de Feature Engineering, pourquoi nous avons dû étendre Spark DataFrames pour préserver des méta-données au travers du pipeline de traitement, et comment nous avons utilisé le Machine Learning pour réconcilier les enregistrements. Nous verrons enfin comment nous avons industrialisé cette application.
Alexis Seigneurin : Développeur depuis 15 ans, j'attache beaucoup d'importance aux problématiques de traitement, d'analyse et de stockage de la donnée.Chez Ippon, j'interviens principalement sur des missions de conseil et d'architecture autour de technologies big data. Par ailleurs, j'anime la formation Spark chez Ippon.
HUG Hadoop User Group du 29 Janvier 2015 chez HP.
Slidedeck des 3 talks ci-dessous:
#1: Traitement des données non structurées (Vidéos, images, …) avec Haven pour Hadoop,
#2: Apache Flink: Fast and Reliable Large-scale Data Processing,
#3: Etude de cas, projet Hadoop dans le domaine des RH avec Capgemini.
La vectorisation des documents : rendre comparables des informations non structurées, de nouvelles opportunités pour un acteur de l’emploi
Introduction sur Tez par Olivier RENAULT de HortonWorks Meetup du 25/11/2014Modern Data Stack France
During this presentation, Olivier will introduce Apache Tez. What it does ? Why is it seen by many as the Map Reduce v2. How is it helping Hive / Pig / Cascading and other increase their performance.
Speaker: Olivier Renault is a Principal Solution Engineer at Hortonworks the company behind Hortonworks Data Platform. Olivier is an expert on how to deploy Hadoop at scale in a secure and performant manner.
HUGFR : Une infrastructure Kafka & Storm pour lutter contre les attaques DDoS...Modern Data Stack France
Presentation d'OVH lors du Hadoop User Group du 6 octobre à Paris.
• Talk #4: Une infrastructure Kafka & Storm pour lutter contre les attaques DDoS en temps-réel par Steven Le Roux de la société OVH.
http://hugfrance.fr/hug_paris_6_oct_cloudera/
HUGFR : Une infrastructure Kafka & Storm pour lutter contre les attaques DDoS...
Dépasser map() et reduce()
1. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation
Commerciale - Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
HUG France #2 - 11 Avril 2012
Aller plus loin que map() et reduce()
Ziad BIZRI
ziad.bizri@ezako.com
@BigDataEzako
2. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Pourquoi vous devez maîtriser MapReduce?
• Parce que c’est la base technique de tout
l’écosystème Hadoop (Hive, Pig, Cascalog)
• Parce que c’est une façon différente de
penser le code
• Parce qu’on est des codeurs et qu’on n’a pas
peur
3. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Running example
« J’ai des fichiers de logs HTTP et je veux la liste
des user agents qui viennent sur mon site »
123.123.123.123 - - [26/Apr/2000:00:23:48 -0400] "GET /pics/wpaper.gif
HTTP/1.0" 200 6248 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05
(Macintosh; I; PPC)"
123.123.123.123 - - [26/Apr/2000:00:23:47 -0400] "GET /asctortf/ HTTP/1.0"
200 8130
"http://search.netscape.com/Computers/Data_Formats/Document/Text/RTF"
"Mozilla/4.05 (Macintosh; I; PPC)"
123.123.123.123 - - [26/Apr/2000:00:23:48 -0400] "GET /pics/5star2000.gif
HTTP/1.0" 200 4005 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05
(Macintosh; I; PPC)"
123.123.123.123 - - [26/Apr/2000:00:23:51 -0400] "GET /cgi-
bin/newcount?jafsof3&width=4&font=digital&noshow HTTP/1.0" 200 36
“http://www.jafsoft.com/asctortf/” "Mozilla/5.0 (Windows; U; Windows NT 5.2;
en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7"
4. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Mapper - simple
public class UserAgentMapper implements Mapper<LongWritable, Text, Text, IntWritable> {
private IntWritable one = new IntWritable(1);
private Text outputKey = new Text();
private static String extractUserAgent(Text logEntry) {}
@Override
public void map(LongWritable key, Text logEntry,
OutputCollector<Text, IntWritable> collector, Reporter reporter)
throws IOException {
outputKey.set(extractUserAgent(logEntry));
collector.collect(outputKey, one);
}
@Override
public void configure(JobConf jobconf) {}
@Override
public void close() throws IOException {}
}
5. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Les détails du mapper
• configure():
- ouvrir une connexion
- lire un fichier et le garder en mémoire
- lire les paramètres passés dans la JobConf
• close():
- idéal pour fermer une connexion
- trop tard pour émettre des paires <clé, valeur>
• reporter:
- framework pour agréger des statistiques
- contient des méthodes utilitaires
6. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Reducer - simple
public class UserAgentReducer implements Reducer<Text, IntWritable, Text, IntWritable> {
@Override
public void reduce(Text key, Iterator<IntWritable> values,
OutputCollector<Text, IntWritable> collector, Reporter reporter)
throws IOException {
int sum = 0;
while (values.hasNext()) {
sum += values.next().get();
}
collector.collect(key, new IntWritable(sum));
}
@Override
public void configure(JobConf jobconf) {}
@Override
public void close() throws IOException {}
}
7. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Exemple de base
• Problème: beaucoup de paires <useragent,
1> en mémoire
- risque de spooling sur le disque
coût d’exécution substantiel
Il faut utiliser un Combiner!
8. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Combiner - simple
En entrée les paramètres de sortie du Mapper
En sortie les paramètres d’entrée du Reducer
public class UserAgentCombiner implements Reducer<Text, IntWritable, Text, IntWritable> {
@Override
public void reduce(Text key, Iterator<IntWritable> values,
OutputCollector<Text, IntWritable> collector, Reporter reporter)
throws IOException {
int sum = 0;
while (values.hasNext()) {
sum += values.next().get();
}
collector.collect(key, new IntWritable(sum));
}
9. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Besoin plus avancé
« Je cherche tous les user agent uniques par
adresse IP »
– Approche 1: deux MapReduce, d’abord les user
agent pour chaque utilisateur, puis les résultats
uniques
Coûteux en temps d’exécution
– Approche 2: dans le mapper sortir <useragent,
ipaddress> puis utiliser un set dans le reducer
pour dédupliquer
Le combiner devient plus complexe
Coûteux en RAM au niveau du reducer
10. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
MapCopySortReduce?
11. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Sort
Le tri est « gratuit » dans MapReduce
– Partitioner
• détermine l’instance du reducer pour une clé
(fonction de hash)
– Ouput Value Grouping Comparator
• groupe les paires pour chaque appel de
Reducer.reduce()
– Output Key Comparator
• trie les paires groupées pour l’iterator de
reduce()
Comment en tirer parti?
12. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Optimisations
• Mapper: <user_agent####ip_address,
ip_address>
• On groupe les paires <user_agent####*>
• Les groupes sont triés par le Output Key
Comparator défaut
• Reducer: compter le nombre de ip_address
uniques
• Combiner: réduire le nombre de
user_agent####ip_address dupliqués
13. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Mapper - optimisé
public class UserAgentMapper implements Mapper<LongWritable, Text, Text, Text> {
private Text outputKey = new Text();
private Text outputValue = new Text();
private static String extractUserAgent(Text logEntry) {}
private static String extractIpAddress(Text logEntry) {}
@Override
public void map(LongWritable key, Text logEntry,
OutputCollector<Text, Text> collector, Reporter reporter)
throws IOException {
String ipaddress = extractIpAddress(logEntry);
outputKey.set(extractUserAgent(logEntry) + "####" + ipaddress);
outputValue.set(ipaddress);
collector.collect(outputKey, outputValue);
}
}
14. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Combiner - optimisé
public class UserAgentCombiner implements Reducer<Text, Text, Text, Text> {
@Override
public void reduce(Text key, Iterator<Text> values,
OutputCollector<Text, Text> collector,
Reporter reporter) throws IOException {
collector.collect(key, values.next());
}
}
15. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Sort - optimisé
public class UserAgentPartitioner implements Partitioner<Text, Text> {
@Override
public int getPartition(Text key, Text value, int numPartitions) {
String keyString = key.toString();
int position = keyString.indexOf("####");
return keyString.substring(0, position).hashCode() % numPartitions;
}
}
public class UserAgentGroupingComparator implements RawComparator<Text> {
@Override
public int compare(Text o1, Text o2) {
String o1String = o1.toString();
String o2String = o2.toString();
String key1 = o1String.substring(0, o1String.indexOf("####"));
String key2 = o2String.substring(0, o2String.indexOf("####"));
return key1.compareTo(key2);
}
@Override
public int compare(byte[] o1, int o1Start, int o1Length, byte[] o2, int o2Start, int o2Length) {
return compare(new Text(o1), new Text(o2));
}
}
16. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Reducer - optimisé
public class UserAgentReducer implements Reducer<Text, Text, Text, IntWritable> {
@Override
public void reduce(Text key, Iterator<Text> values,
OutputCollector<Text, IntWritable> collector, Reporter reporter)
throws IOException {
String lastIp = null;
int sum = 0;
while (values.hasNext()) {
String currentIp = values.next().toString();
if (lastIp == null) {
lastIp = currentIp;
sum += 1;
} else if (lastIp.equals(currentIp)) {
// Do nothing
} else {
sum += 1;
}
}
String keyString = key.toString();
collector.collect(new Text(keyString.substring(0, keyString.indexOf("####"))),
new IntWritable(sum));
}
}
17. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation
Commerciale - Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Questions?
Mapper
Reducer Shuffler
Partitioner Copy
Reporter Configure Sort
Combiner
Join MultipleInputs
Collector
18. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation
Commerciale - Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
HUG France #2 - 11 Avril 2012
Aller plus loin que map() et reduce()
Merci pour votre attention
Ziad BIZRI
ziad.bizri@ezako.com
@BigDataEzako