[Internet of Things] Hortonworks : streaming Twitter avec HDF via NiFi

Ce billet présente comment construire un flux de tweets avec la plateforme HDF (Hortonworks Data Flow) via NiFi.

Pour en savoir plus sur NiFi, vous pouvez aller ici.

Avant de commencer…

On suppose que HDF a déjà été installé au préalable. Le cas échéant, vous pouvez jeter un coup d’œil ici.

NiFi peut bien sûr être installé via Ambari, en allant dans les services.

L’environnement choisi pour ce tutoriel est Linux CentOS.

Entrée dans le vif du sujet

Préparation d’un Data Flow Twitter

  • Récupération d’un template Twitter.

A cette étape, dans l’optique de se connecter à Twitter et récupérer des tweets, on peut soit créer son propre Data Flow de tweets en partant de rien, soit récupérer un template XML préconstruit ici. Le template choisi – et plus adapté au sujet de notre billet – est Pull_from_Twitter_Garden_Hose.xml.

Pour en savoir plus sur les templates, vous pouvez jeter un œil à l’URL suivante : http://nifi.apache.org/docs/nifi-docs/html/user-guide.html#templates.

La récupération peut se faire en tapant la ligne de commande suivante :

wget https://cwiki.apache.org/confluence/download/attachments/57904847/Pull_from_Twitter_Garden_Hose.xml?version=1&modificationDate=1433234009000&api=v2

Si tout va bien:


  • Chargement du template Twitter au sein de HDF/NiFi.

Au sein de la barre d’outils de l’interface HDF/NiFi, cliquer sur le bouton Templates représentant un fichier :


Naviguez et chargez le fichier XML du template Twitter fraîchement récupéré :


Il faudrait alors le récupérer en déplaçant le bouton Template de la barre d’outils de l’espace de travail vers la zone de design :


Avant d’ensuite sélectionner le template cible au sein de la boîte de dialogue qui s’ouvrira :


Le DataFlow du template récupéré aura l’aperçu suivant après ajout dans l’espace de travail :


En quelques points :

  • Grab Garden Hose : processeur GetTwitter
    qui connecte le Data Flow à Twitter et récupère les tweets en se basant sur des termes recherchés définis au sein de l’API Twitter.
  • Pull Key Attributes : processeur qui sert d’évaluateur d’expressions en fonction de valeurs spécifiées. Dans notre contexte,
  • Find only Tweets : processeur qui sert de filtre à tweets. Dans notre cas, il ignore notamment les tweets sans messages ou les retweets.
  • Copy of Tweets : processeur qui copie les tweets vers un dossier spécifique. En l’occurrence : /$NIFI_HOME/content_repository. Dans notre exemple, ce processeur sera supprimé/ignoré.

Alimentation de Hadoop par des tweets

L’objectif sera de faire en sorte que le Data Flow fraîchement chargé soit en mesure de stocker des tweets au sein d’un espace HDFS.

Pour ce faire, parcourons les étapes suivantes :

  • Création d’un dossier de destination au sein de HDFS.
hadoop fs -mkdir -p /nifi/twitter
  • Préparation d’un processeur PutHDFS.

Drag-droppez vers la zone de design le bouton dont l’icône représente un processeur, et située dans la barre d’outils horizontale de l’interface NiFi :


Sélectionnez le processeur PutHDFS dans la liste des processeurs disponibles :


Connectez PutHDFS au processeur Find only Tweets via une relation de précédence de type tweet :


Ce qui donnerait :


Il faudrait ensuite configurer le processeur PutHDFS en accédant à ses propriétés via un clic-droit :


A ce niveau-là, il faut définir comment le processeur terminera ses actions :


Et définir certaines propriétés, à commencer le dossier de destination des tweets et les fichiers de configuration Hadoop – hdfs-site.xml et core-site.xml (en général, présents au sein du répertoire etc/hadoop/conf)
– que NiFi devra exploiter :


  • Configuration du processeur GetTwitter.

Pour ce faire, il faut effectuer un clic-droit sur le processeur GetTwitter appelé Grab Garden Hose pour accéder à sa fenêtre de configuration:


Puis procéder à la configuration de certaines de ses propriétés-clés :


Les termes à filtrer, dans notre cas, sont seulement les mots-clés « Governance », « Risk » et « Compliance ». Pour que cela soit effectif, il faut également s’assurer que la valeur de Twitter Endpoint soit à Filter Endpoint. A noter que le Consumer Key et l’Access Token sont automatiquement fournis par l’API Twitter. Les valeurs de Consumer Secret et Access Token Secret, elles, doivent être fournies.

  • Lancement du DataFlow.

La structure finale du DataFlow configuré sera la suivante :


Après lancement du DataFlow via l’icône de la barre d’outils, si tout va bien, le contenu du dossier de destination des tweets (ligne de commande : hadoop fs –ls /nifi/twitter), au sein de l’espace HDFS, aura cet extrait :


Pour aller plus loin…

Jetez un coup d’œil ici pour plus de références sur NiFi, qui s’appliquent également à HDF. Pour plus d’articles autour de l’IoT, vous pouvez aller .


Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s