0% ont trouvé ce document utile (0 vote)
59 vues35 pages

Bigdata Docker

Transféré par

manarsalah070503
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
59 vues35 pages

Bigdata Docker

Transféré par

manarsalah070503
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Fait par DORIAN CURTIS TEFFO en L2 BIG DATA

COMPTE RENDU DU DS DE BIG DATA

1- Mise en place du cluster Hadoop sur Docker (+ SPARK)

Pour ce faire nous allons créer plusieurs services (qui correspondent à


des containers Docker) qui sont :

En plus de ces services nous allons aussi ajouter un spark-master et


deux spark-worker.

 Structure du dossier
 Création de l’image de base Docker qui sera utilisé par tous les
containers : dans celle-ci nous allons installer Hadoop, Spark, et
ajouter les fichiers de configuration(core-site.xml, hdfs-site.xml,
etc) dans cette image.
 Fichiers de configuration
Core-site.xml

Hdfs-site.xml
Yarn-site.xml
Mapred-site.xml

Hadoop_env.sh :
Pour créer cette image de base, il suffit de saisir cette commande :

docker build -t hadoop-base :3.3.5-dorian base/ (car le dockerfile de


l’image de base est dans le dossier « base »)

 Image des différents services de notre cluster : Namenode,


DataNode, History Server, Resource Manager and Nodemanager
Namenode

DataNode

Resource Manager
Nodemanager

History Server
 Création du docker-compose file où nous allons définir tous nos
services (containers)
R.Q : Lorsqu’on définit des containers dans le même dockerfile, ils sont
par défaut dans le même docker network (donc peuvent communiquer
entre eux).

Pour démarrer notre cluster nous devons démarrer tous les containers
grâce à la commande

docker compose up -d (-d pour que ca soit executer en background, pour


pouvour utiliser le terminal)
Pour vérifier que le cluster est bien mis en place, nous pouvons nous
connecter au namenode et rentrer une commande permettant de vérifier
l’état du cluster :
docker exec -it namenode bash hdfs dfsadmin -report
2- Exécution du code MapReduce sur le dataset
purchases.txt
Pour pouvoir exécuter les différents programmes, nous devons nous
connecter au container du namenode en utilisant :
docker exec -it namenode bash
Et ensuite mettre le fichier purchases.txt dans hdfs, et ensuite utiliser la
command hadoop jar pour exécuter le mapper et le reducer

Résultat:

a-Chiffres d’affaires par item


mapper .py

reducer.py
Résultat :
Vérification avec SPARK SQL
On remarque bien que les chiffres pour chaque item correspondent
effectivement

b- Item le plus vendu selon le chiffre d’affaires


mapper.py

reducer.py
Résultat

Vérification avec SPARK SQL


c- Moyenne de vente par Store
mapper.py

Reducer.py
Résultat
Vérification avec SPARK SQL

On remarque bien que les résulats sont les mêmes (Baton Rouge,
Cincinati, Baltimore, …..)

d- Item le plus vendu pour chaque store ( en terme de nombre de


ventes )
mapper.py
Reducer.py
3- Partie SPARK
Comme précisez plus haut, nous allons aussi créer un cluster Spark
avec un master et 2 workers.
Pour se faire nous devon d’abord créer l’image docker de base :
Nous devons aussi modifier le docker-compose.yml contenant les
services Hadoop pour y ajouter les services Spark.
 Présentation du Dataset :
En m’inspirant d’un dataset provenant de Kaggle, et du fait que celui-ci
n’avait pas assez de colonnes, j’ai décidé de créer deux datasets (avec
lesquelles une jointure serait possible), et voici la description de ceux-ci :
Et voici le code Python qui m’a permis de générer ses deux fichier csv
(avec des données aléatoires)
A partir de ces deux datasets, voici quelques KPIs qu’on aimerait
générer :

 Un fichier contenant des statistiques clés d’un joueur durant une


session de jeu telle que la durée moyenne d’une session de jeu, le
nombre moyen de points d’expérience générés, nombre moyen de
quêtes complétées

 Un autre fichier contenant des métriques par genre de jeux ( qui


pourrait servir par exemple pour trouver le genre de jeux le plus
apprécié afin de créer un jeu du même genre) telles que : le
nombre moyen de quêtes complétées par genre, la durée
moyenne de session, la longueur de jeu par genre.

 Un dernier fichier contenant des métriques par Niveau de joueur


(qui pourrait servir à savoir si le niveau d’un joueur impacte son
expérience du jeu afin de créer un jeu avec des niveaux de
difficultés adaptés) telles que : le nombre d’ennemies éliminés par
niveau du joueur

Code SPARK :
Pour saisir le code Spark, il faut d’abord se rendre dans le container sur
spark-master et ensuite créer un fichier python (qui contiendra le code
Pyspark)
On remarque bien que dans la fonction main(), je lis les fichiers à partir
de HDFS (que j’ai préalablement chargé dans HDFS), et à la fin, tous les
KPIs, je les charge sous forme de fichier parquet toujours dans HDFS.

Pour exécuter ce code, nous devons utiliser la commande « spark-


submit »

Et voici quelques lignes de l’output


On remarque bien que grâce au système de logging que j’ai implementé
dans le code, nous pouvons voir au fur et à mesure que les différents
fichier parquet ont bien été sauvegardé dans HDFS.

Pour vérifier ces fichiers nous pouvons utiliser SparkSQL

Vous aimerez peut-être aussi