Dans cette documentation nous allons :
- Compter les données dans notre cluster
- Importer et pousser un fichier csv sur notre cluster
- Génerer un graphique
-
Git
-
Docker Engine
-
Docker Compose
-
Cluster Hadoop sur la
VM1 -
Datanode distant sur la
VM2
Dans un premier temps, nous allons installer pyspark sur VM1 et VM2. Mes machine sont des Red Hat donc j'utilise dnf pour installer mes paquets.
dnf install python3 -y && dnf install python3-pip -y && pip3 install pysparkNous allons maintenant installer pyspark sur nos 5 conteneurs.
Il vous faudra executer les commandes ci-dessous sur les 3 datanodes Obtenez les ids de votre conteneur.
docker psConnectez vous au conteneur grace à l'id.
docker exec -ti <id> bashInstallez pyspark.
apt-get install python3 -y && apt-get install python3-pip -y && pip3 install pyspark
/usr/local/spark/sbin/start-worker.sh spark://namenode:7077Obtenez l'id de votre conteneur.
docker psConnectez vous au conteneur.
docker exec -ti datanode4 bashInstallez pyspark en renseignant la bonne ip, celle de la VM1.
apt-get install python3 -y && apt-get install python3-pip -y && pip3 install pyspark
/usr/local/spark/sbin/start-worker.sh spark://ip:7077Obtenez les ids de votre conteneur.
docker psConnectez vous au conteneur grace à l'id.
docker exec -ti <id> bashInstallez pyspark.
apt-get install python3 -y && apt-get install python3-pip -y && pip3 install pyspark
/usr/local/spark/sbin/start-master.shUne fois l'installation terminé sur notre cluster, tout le reste de la configuration se fera sur votre namenode.
Installez un editeur de texte.
apt-get install nanoCréer un fichier text.txt et écrivez quelques mots.
nano text.txtPoussez le fichier text.txt dans votre cluster dans le repertoire /user/root
hadoop fs -mkdir -p /user/root/
hadoop fs -put text.txtVérifiez sur le webui dans Utilities/Browse the file system.

Créer un dossier spark-logs dans votre cluster.
hadoop fs -mkdir /spark-logsCréer un fichier text.py
nano text.pyfrom pyspark import SparkContext
# Instantiation d'un SparkContext
sc = SparkContext()
# Lecture d'un fichier texte : le fichier est décomposé en lignes.
lines = sc.textFile("text.txt")
# Décomposition de chaque ligne en mots
word_counts = lines.flatMap(lambda line: line.split(' ')) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda count1, count2: count1 + count2) \
.collect()
# Chaque paire (clé, valeur) est affichée
for (word, count) in word_counts:
print(word, count)
Vous pouvez maintenant executer le script qui va compter le nombre de mot dans le fichier que vous avez push dans le cluster.
python3 text.pyNous allons maintenant telecharger des données et les push dans notre cluster. Nous genererons par la suite des statistiques avec pyspark.
Les données telechargées sont sous format csv. Il s'agit des voeux Parcoursup de l'année 2020;
Télechargez et renommez les données.
wget https://www.data.gouv.fr/fr/datasets/r/7400c7d1-8db6-43b2-9235-aae564223963
mv 7400c7d1-8db6-43b2-9235-aae564223963 fr-esr-parcoursup.csvPoussez les données dans votre cluster
hadoop fs -put fr-esr-parcoursup.csvCréer un fichier test_spark.py et executez le.
nano test_spark.py
python3 test_spark.pyAffichez les données géneré dans le cluster
hadoop fs -cat /user/root/result-parcoursup.csv/part-00000-9d5a5330-f923-4806-a095-dd8740e8a120-c000.csvAttention ! Votre fichier a surement un nom différent. Vous pouvez vérifier sur le webui ou avec un hadoop fs -ls /user/root/result-parcoursup.csv/
Copiez l'output et créez un fichier result.txt. N'oubliez pas de supprimer la premiere ligne !
IFSI,D.E secteur sanitaire,D.E Infirmier,1391246
Ecole d'Ingénieur,Formations des écoles d'ingénieurs,Formation d'ingénieur Bac + 5,626037
PASS,Licence - Sciences - technologies - santé,Parcours d'Accès Spécifique Santé (PASS),512607
Licence,Licence - Droit-économie-gestion,Droit,321999
BTS,BTS - Services,Management Commercial Opérationnel,291727
DUT,DUT - Service,Techniques de commercialisation,214800
DUT,DUT - Service,Gestion des entreprises et des administrations,205799
CPGE,Classe préparatoire scientifique,MPSI,198311
BTS,BTS - Services,Négociation et digitalisation de la Relation Client,193432
CPGE,Classe préparatoire scientifique,PCSI,183942Nous ne pouvons pas visualiser ces données sans interface graphique donc j'ai transféré mon fichier result.txt sur mon windows avec python d'installer. Un fichier result_spark.py doit aussi etre créer dans le meme repertoire que result.txt.
Rendez vous avec le cmd dans l'emplacement où se trouve vos fichiers.
Vous devez avoir installer Python sur windows. N'oubliez pas d'installer matplotlib.
pip install matplotlibPour finir, affichez votre graphique.
type result.txt | python3 result_spark.py