Objectifs
-
Dans ce TP nous allons commencer par creer un bucket AWS S3 dans lequel nous allons stoquer un sous-ensemble de donnees GDELT qu’on va explorer.
-
Dans une deuxieme etape nous allons lancer un cluster Spark sur AWS EMR.
-
Nous allons utiliser ce cluster pour stocker des donnees de GDELT dans notre bucket S3 via un ETL distribue lance depuis un notebook Spark (Zeppelin).
-
A la fin du TP, nous allons utiliser Spark pour explorer ce jeu de donner qui sera utilise plus tard pour le projet.
Creation d’un bucket AWS S3
Nous allons sauvegarder une copie sur AWS du jeu de donnees utilisees. En utilisant un bucket AWS S3 dans ce but nous nous protegeons d’une eventuelle panne du site web de GDELT et nous allons avoir une source de donnees distribue et replique avec une tres grande tolerance aux pannes.
-
Allez sur la console AWS S3 (https://s3.console.aws.amazon.com/s3/home?region=us-east-1#
-
Creez un bucket nom-prenom-telecom-gdelt2018 (! le nom du bucket doit etre unique sur l’ensemble des utilisateurs S3). Assurez-vous que le bucket cree est dans la region US-East(N. Virginia). Gardez tous les autres parametres de configuration du bucket a leur valeur par default.
Démarrage d’un cluster sur AWS EMR
Configuration du votre compte AWS
1) Rendez-vous sur la console AWS et créez une paire de clefs gdeltKeyPair: https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#KeyPairs:sort=keyName
2) la clé privée sera automatiquement sauvegardée après la création dans un fichier gdeltKeyPair.pem . Notez l’emplacement de ce fichier, vous en aurez besoin pour plus tard
3) Allez sur https://console.aws.amazon.com/iam/home?region=us-east-1#/groups et creez un group admin avec une AdministratorAccess Policy
4) Créez un utilisateur pour la gestion de vos clusters:
a) Allez sur la console IAM et cliquez sur Add User
b) Mettez comme nom d’utilisateur: gdeltUser et cochez la case Programmatic access pour créer un identifiant d’accès et une clé de sécurité (access key ID and secret access key)
c) A l’étape suivante mettez votre utilisateur dans le groupe administrateur et validez la création de l’utilisateur
d) Sur la page de confirmation de la création de votre utilisatur, cliquez sur Download csv pour sauvegarder dans un fichier credentials.csv l’ID et la clé de sécurité
Pour simplifier les procédures nous allons utiliser un utilisateur avec des droits d'admin. En général ce n'est pas recommandé, pour des raisons de sécurité d'utiliser des comptes avec trop de droits (si quelqu'un arrive à mettre la main sur votre identifiant d'accès et votre clé de sécurité il pourra démarrer des machines en votre nom). Nous vous conseillons de désactiver cet utilisateur à la fin du TP et créer un avec des droits plus spécifiques. |
Démarrage d’un cluster de 3 noeuds via AWS EMR
Nous allons utiliser la console AWS EMR pour démarrer notre cluster:
-
Allez dans la console AWS EMR: https://console.aws.amazon.com/elasticmapreduce/home?region=us-east-1# et cliquer sur Create cluster
-
Modifiez les paramètres suivants puis validez:
-
GdeltCluster pour le nom du cluster
-
sélectionnéz dans Applications ⇒ Spark
-
instance_type ⇒ m3.large
-
key pair ⇒ gdeltKeyPair
-
-
Votre cluster est en train de démarrer:
-
Dans quelques minutes votre cluster aura démarré, notez l’addresse de votre master Spark:
-
Rajoutez une regle de firewall dans le security group du master pour permettre l’access SSH:
-
Pour acceder aux services qui tournent sur le master ( Zeppelin -notebook spark, Ganglia - monitoring de ressources, Spark History Server / SparkUI etc) on doit passser par un tunnel SSH.
Vous pouvez utiliser la directions des ports via un tunnel ssh comme montre en TP pour acceder aux services via http://localhost:PORT.
Cependant on peut rediriger tous les ports a la fois via la meme commande SSH et on peut utiliser un proxy web (ex: FoxProxy) pour faire directement la translation master-public-dns-name:PORT ⇒ localhost:PORT. Pour cela cliquez sur Enable Web Connection et suivez la documentation fournie.
La liste complete des services/ports est la suivante:
Si vous avez un probleme lors de l’etablissement du tunnel ssh verifiez/corrigez les permissions sur votre cle:
|
Installation de AWS CLI
-
Pour certaines operation ca peut etre pratique d’installer sur votre machine le client AWS(awscli).
-
Une fois le client installe, utilisez la commande aws configure pour configurer votre installation (inserez votre Access Key ID et votre Secret Access Key (que vous avez sauvegardé dans credentials.csv), spécifiez la région par default à us-east-1, et le type de log par défaut à text:
-
Pour verifier que la configuration est correcte on peut essayer d’afficher le contenu du bucket S3 precedemment cree:
[aar@wifibridge 2018]# aws configure (1) AWS Access Key ID [None]: ****************JVBA AWS Secret Access Key [None]: ****************EiQv Default region name [None]: us-east-1 Default output format [None]: text [aar@wifibridge 2018]# aws s3 ls --summarize --human-readable --recursive s3://john-doe-telecom-gdelt2018/ Total Objects: 0 Total Size: 0 Bytes
Connexion à l’interface du Zeppelin
-
Ouvrez un navigateur vers http://master-public-dns-name:8890 (avec la configuration FoxProxy active!) et vous aurez accès à l’interface du Zeppelin
-
Importer le notebooks suivants dans Zeppelin et suivez les instructions
Éteindre votre cluster
Allez a https://console.aws.amazon.com/elasticmapreduce/home?region=us-east-1, sélectionner votre cluster et cliquez sur Terminate.
Assurez-vous que votre cluster est arrete: