Objectifs

  1. 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.

  2. Dans une deuxieme etape nous allons lancer un cluster Spark sur AWS EMR.

  3. 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).

  4. 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.

aws s3 create bucket
  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.

aws s3 create bucket2
aws s3 create bucket3
aws s3 create bucket4

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

aws create keypair

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

aws create keypair2

3) Allez sur https://console.aws.amazon.com/iam/home?region=us-east-1#/groups et creez un group admin avec une AdministratorAccess Policy

aws IAM create group
aws IAM create group2
aws IAM create group3

4) Créez un utilisateur pour la gestion de vos clusters:

a) Allez sur la console IAM et cliquez sur Add User

aws create IAM 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)

aws create IAM user2

c) A l’étape suivante mettez votre utilisateur dans le groupe administrateur et validez la création de l’utilisateur

aws create IAM user3
aws create IAM user4

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é

aws create IAM user5
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:

  1. Allez dans la console AWS EMR: https://console.aws.amazon.com/elasticmapreduce/home?region=us-east-1# et cliquer sur Create cluster

    aws EMR create cluster
  2. Modifiez les paramètres suivants puis validez:

    1. GdeltCluster pour le nom du cluster

    2. sélectionnéz dans Applications ⇒ Spark

    3. instance_typem3.large

    4. key pairgdeltKeyPair

      aws EMR create cluster2
  3. Votre cluster est en train de démarrer:

    aws EMR create cluster3
  4. Dans quelques minutes votre cluster aura démarré, notez l’addresse de votre master Spark:

    aws EMR create cluster4
  5. Rajoutez une regle de firewall dans le security group du master pour permettre l’access SSH:

    aws security group
    aws security group2
    aws security group3
  6. 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:

    aws EMR services

Si vous avez un probleme lors de l’etablissement du tunnel ssh verifiez/corrigez les permissions sur votre cle:

[aar@wifibridge 2018]# chmod og-rwx ~/Downloads/gdeltKeyPair.pem

Installation de AWS CLI

  1. Pour certaines operation ca peut etre pratique d’installer sur votre machine le client AWS(awscli).

  2. 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:

  3. 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

  1. Ouvrez un navigateur vers http://master-public-dns-name:8890 (avec la configuration FoxProxy active!) et vous aurez accès à l’interface du Zeppelin

    zeppelin
  2. 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.

aws EMR terminate cluster

Assurez-vous que votre cluster est arrete:

aws EMR terminate cluster2