Big Data Analytics
Calcul de moyenne mobile avec Hadoop
Cécile Bothorel, Romain Picot-Clemente
Printemps 2015
1 Objectif
L’objectif de cette activité est de réaliser une moyenne mobile simple en MapReduce sur une
série temporelle (marché financier), en utilisant Python.
2 Moyenne mobile simple
La moyenne mobile simple est une moyenne arithmétique calculée à partir d’une série de don-
nées couvrant un intervalle de temps. Elle est obtenue en additionnant chaque valeur de l’inter-
valle puis en divisant la somme obtenue par le nombre d’intervalles couvert par la période.
Par exemple, en sommant les cours de clôture d’une action sur les 25 derniers jours et en divi-
sant la somme obtenue par 25, vous obtiendrez la moyenne mobile simple sur 25 jours.
Les données à utiliser se trouvent ici :
https://s3.amazonaws.com/hw-sandbox/tutorial1/NYSE-2000-2001.tsv.gz.
Il s’agit de deux ans de cours de bourse, fichier environ 11Mo.
Stock ticker data from the New York Stock Exchange from the years
2000-2001. Each stock contains the following fields:
exchange stock_symbol date stock_price_open stock_price_high
stock_price_low stock_price_close stock_volume stock_price_adj_close
For example:
NYSE ASP 2001-12-31 12.55 12.8 12.42 12.8 11300 6.91
Activité 1
Réaliser la moyenne mobile simple sur Excel/LibreOffice avec une fenêtre de 30 jours sur
le jeu de données
1
Activité 2
Déplacer le jeu de données dans HDFS
Réaliser la moyenne mobile simple en MapReduce sous Python
Conseil : tester en local sur les 100 premières lignes du fichier avant de déployer votre code
et lancer le job Hadoop
3 Utilisation de la machine virtuelle de l’école
Cloudera1fournit une machine virtuelle2où Hadoop, ainsi qu’un grand nombre d’outils de son
écosystème, sont préinstallés. Nous utilisons cette machine virtuelle que nous avons fait instal-
lée sur les postes des salles de TP.
Démarrage :
Démarrez votre machine virtuelle
La machine virtuelle est en anglais par défaut, gênant pour le clavier... Pour le changer,
allez dans la barre de menu de la distribution Linux : System –> Preferences –> Keyboard
–> Layouts (A ne faire que la première fois).
Lancez un terminal
Manipulation de HDFS Toutes les commandes interagissant avec le système de fichiers Ha-
doop commencent par hadoop fs. Ensuite, les options rajoutées sont très largement inspirées
des commandes Unix standard.
Dans la Table 1 nous résumons les commandes les plus utilisées dans Hadoop HDFS.
hadoop fs -ls Afficher le contenu du répertoire racine
hadoop fs -put file.txt Upload un fichier dans hadoop (à partir du réper-
toire courant linux)
hadoop fs -get file.txt Download un fichier à partir de hadoop sur votre
disque local
hadoop fs -tail file.txt Lire les dernières lignes du fichier
hadoop fs -cat file.txt Affiche tout le contenu du fichier
hadoop fs -cat file.txt | less Lire le fichier page par page
hadoop fs -mv file.txt newfile.txt Renommer le fichier
hadoop fs -rm newfile.txt Supprimer le fichier
hadoop fs -mkfir myinput Créer un répertoire
TABLE 1 – Principales commandes de manipulation de fichiers HDFS
1Cloudera : Plateforme de BigData, https://www.cloudera.com/
2http://content.udacity-data.com/courses/ud617/Cloudera-Udacity-Training-VM-4.1.1.c.
zi
2
Lancer un Job sur Hadoop Lancer un job sur Hadoop implique qu’on fera appel au mapper
puis au reducer sur une entrée volumineuse, et qu’on obtiendra à la fin un résultat, directement
sur HDFS. Pour faire cela, l’instruction à exécuter sur notre machine virtuelle est du type :
hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-
streaming-2.0.0-mr1-cdh4.1.1.jar -mapper mapper.py -reducer reducer.py
-file mapper.py -file reducer.py -input myinput -output joboutput
Cette instruction donne en paramètres les fichiers correspondant aux Mappers et Reducers, et
les répertoires contenant le fichier d’entrée (myinput) et la sortie à générer (joboutput). Le
répertoire de sortie, après exécution, contiendra un fichier appelé part-00000, représentant la
sortie désirée.
Remarque 1 : Nous utilisons Hadoop Streaming qui permet de créer et lancer des jobs Ma-
pReduce avec tout type d’exécutable ou script en tant que mapper et reducer. Ici nos scripts
sont en Python, mais les mappers et reducers pourraient être des classes Java, des utilitaires
unix,des scripts R, etc. La manière standard est d’écrire des programmes MapReduce en Java
via l’API Java MapReduce.
Remarque 2 : Le répertoire d’entrée doit contenir un seul fichier. Le répertoire de sortie ne doit
pas exister avant l’exécution de l’instruction.
Pour faciliter le travail dans notre machine virtuelle, un raccourci a été créé pour cette instruction
(vous le trouverez défini dans le fichier ˜
/.bashrc). Désormais, pour exécuter cette instruction,
il suffit de taper :
hs mapper.py reducer.py myinput joboutput
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !