[Big Data] HDInsight : implémentation et utilisation d’un cluster Storm

Ce billet montre comment implémenter un cluster Storm – que ce soit via Azure Management Portal ou Azure Powershell – et y manipuler des données dans un environnement HDInsight.

Pour comprendre les concepts associés aux Big Data,et à HDInsight, vous pouvez aller ici. Et pour Storm, c’est .

 

Avant de commencer…

Le scénario est résolument simple : créer un cluster Storm de plusieurs nœuds et y lancer une topologie à partir d’un exemple JAR disponible sur Azure.

Le but de ce billet n’est pas de tester les performances relatives à l’utilisation d’une solution comme Storm, mais plutôt de s’initier à son utilisation.

On supposera :

 

Entrée dans le vif du sujet…

Implémentation d’un cluster Storm

    … avec Azure Management Portal

Pour créer un cluster Storm, suivez les étapes suivantes :

  • Accès au service HDInsight.

Faites un clic sur le service HDInsight, situé dans le panneau de navigation à gauche de l’Azure Management Portal, puis cliquez sur Create an HDInsight cluster :


Cela ouvrira, à partir du bas, le panneau contenant les options de création d’un cluster HDInsight :


Il existe 2 possibilités de création : la création rapide (Hadoop, HBase, Storm…), ou celle personnalisée (Custom Create). Nous allons opter pour le Custom Create.

  • Lancement de la création personnalisée.

Après clic sur Custom Create, une fenêtre modale interactive va s’ouvrir et permettre la création du cluster étape par étape :

  • Etape 1 – Spécification des informations détaillées du cluster.


        Quelques remarques sur la 1ère étape:

  • Le nom du cluster doit être globalement unique.
  • Le type de cluster permet d’indiquer la nature du cluster (Hadoop, Storm, Storm… à la date d’écriture de ce billet).
  • Le type de système d’exploitation est par défaut la dernière version stable de Windows Server. Il est néanmoins possible de choisir la distribution Linux Ubuntu (à l’heure de l’écriture du billet).
  • La version HDInsight détermine la version du cluster à créer. Par défaut, la version la plus récente est choisie (et recommandée). Pour plus d’informations sur les versions, vous pouvez aller ici : http://azure.microsoft.com/en-us/documentation/articles/hdinsight-component-versioning/.
  • Etape 2 – Configuration du cluster.


Quelques remarques sur la 2ème étape:

  • Au moins 2 nœuds sont recommandés pour de la haute-disponibilité. Le nombre maximal de nœuds dépend des options souscrites lors de l’inscription à Windows Azure auprès de Microsoft. Plus de détails ici : http://azure.microsoft.com/en-us/pricing/details/hdinsight/.
  • La région (ou le réseau virtuel) indique l’endroit où sera stocké le cluster. Il doit être identique à celui du compte de stockage préalablement créé. Par exemple, si le compte de stockage est sur West Europe, mettez West Europe pour le cluster.
  • Pour rappel :
    • Le head node est le nœud principal qui fait tourner Nimbus.
    • Les data nodes sont les nœuds travailleurs qui exécuteront les tâches déléguées par Nimbus en lançant leur superviseur.
    • Le ZooKeeper est un nœud qui permet de coordonner les traitements au sein d’un système distribué, comme Storm.
  • Etape 3 – Configuration des informations d’authentification au cluster.


        Quelques remarques sur la 3ème étape :

  • L’username HTTP correspond au compte – à créer – utilisé pour accéder au cluster.
  • Le mot-de-passe de l’username http doit être suffisamment fort.
  • Etape 4 – Sélection du compte de stockage.


Quelques remarques sur la 4ème étape :

  • Il existe 3 options de sélection d’un compte de stockage : créer un nouveau compte de stockage, utiliser un compte de stockage issu d’une autre inscription et utiliser un compte de stockage existant (comme dans notre démonstration).
  • Le nom du compte de stockage est dépendant de l’option de sélection choisie.
  • Le container de stockage par défaut (créé avec le compte de stockage), où seront stockées les données.
  • Etape 5 – Ajout d’actions de scripts.


Il s’agit d’une option de configuration permettant de produire des actions de scripts Powershell pour une personnalisation souvent plus avancée (i.e., ajout de modules R ou Spark, etc…). Son utilisation n’est possible qu’à partir de la version 3.1 de HDInsight.

Plus de détails ici : http://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-customize-cluster/. Dans notre démonstration, nous allons ignorer cette étape.

  • Validation et lancement de la création du cluster.

Dans la dernière étape de configuration du cluster, cliquez sur le bouton de validation. Cela lancera le processus de création du cluster Hadoop :


Avec possibilité de suivre en temps réel et en détail le statut de la progression (en cliquant sur )
:


Ou au sein du service HDInsight du panneau de navigation de gauche :


 

Si tout va bien, nous obtiendrons les résultats suivants :



 

    … avec Azure Powershell

Azure Powershell propose les principaux Cmdlets suivantes pour créer et gérer un cluster Storm:

Cmdlet Description
New-AzureHDInsightCluster Crée un nouveau cluster Storm HDInsight au sein de l’abonnement Azure courant (ou spécifié).
New-AzureHDInsightClusterConfig Crée une configuration de cluster Storm HDInsight avec différents paramètres tels que le nombre de nœuds, la taille des nœuds,… à utiliser lors de la création dudit cluster.
Add-AzureHDInsightConfigValues Ajoute des valeurs de configuration à la configuration courante du cluster Storm HDInsight.
Get-AzureHDInsightCluster Fournit la liste des clusters d’un abonnement Azure, et leurs informations détaillées.
Get-AzureHDInsightProperties Fournit les propriétés d’un service Azure HDInsight, comme le nombre de clusters Hadoop,…
Use-AzureHDInsightCluster Sélectionne le cluster Storm HDInsight à utiliser pour un job.
Remove-AzureHDInsightCluster Supprime un cluster Storm HDInsight.

 

Pour créer un cluster Storm via Azure Powershell, suivez les étapes suivantes :

  • Lancement du script de création d’un cluster Storm.

Copiez-collez le script ci-dessus au sein dans l’invite de commandes ou une fenêtre de script Windows Powershell ISE (dans tous les cas, après avoir correctement spécifié les valeurs de paramètres, dont le nom de l’abonnement Azure) :

<pre>$subscriptionName = "<Nom_Abonnement_Azure>" # Nom de l'abonnement Azure à spécifier
$storageAccountName = "hd1nst0rage" # Nom du compte de stockage à utiliser
$storageAccountLocation = "West Europe" # Localisation du compte de stockage à utiliser
$clusterType = "Storm" # Type de cluster à créer
$clusterName = "St0rmCluster" # Nom du cluster à créer
$clusterNodeCount = "4" # Nombre de noeuds du cluster

Select-AzureSubscription -SubscriptionName $subscriptionName -Current

$storageAccountKey = Get-AzureStorageKey -StorageAccountName $storageAccountName | %{$_.Primary}
$blobStorageName = "$storageAccountName.blob.core.windows.net" # HDInsight utilise un nom de compte de stockage BLOB pleinement qualifié

New-AzureHDInsightCluster `
-Name $clusterName `
-ClusterType $clusterType `
-Location $storageAccountLocation `
-DefaultStorageAccountName $blobStorageName `
-DefaultStorageAccountKey $storageAccountKey `
-ClusterSizeInNodes $clusterNodeCount

Sitôt le script lancé, une boîte modale d’authentification va s’ouvrir :


Il faut entrer un (nouveau) compte d’accès au cluster à créer, ainsi qu’un mot-de-passe :



L’interpréteur de commandes Powershell va ensuite demander d’entrer un nom pour le container de stockage par défaut du cluster. Dans notre exemple, le nom hd1ndefaultcontainer sera arbitrairement choisi :


Après spécification du nom du container de stockage par défaut, la création (ou approvisionnement) du cluster va se lancer. Une fenêtre ancrée au sein de Windows Powershell ISE va indiquer la progression de l’opération, comme ci-dessous :


Sitôt la création du cluster terminée, un message de sortie va s’afficher au sein de Windows Powershell ISE, avec quelques informations élémentaires en guise de synthèse :


 

  • Vérification de la création du cluster Hadoop HDInsight.

Lancez le script suivant pour vérifier si le cluster a été correctement créé :

Get-AzureHDInsightCluster -Name "St0rmCluster"

 

Accès au tableau de bord de Storm

Il est possible d’accéder au tableau de bord du cluster Storm fraîchement créé de diverses manières :

  • En allant à l’URL suivante : https://<clustername>.azurehdinsight.net//, où <clustername> est le nom du cluster Storm (dans notre cas, St0rmCluster).

    A noter qu’une boîte modale d’authentification s’ouvrira :


  • En cliquant sur Storm Dashboard en bas de page de l’interface Azure Management Portal, après avoir pointé sur le cluster (à partir de la section HDInsight, ou l’interface d’accueil All items) :


L’interface du tableau de bord a l’aperçu suivant :


Le tableau de bord contient 2 onglets :

  • Submit Topology, qui est un formulaire de lancement de topologies (équivalent des jobs pour Hadoop, mais pour Storm, pour rappel). Elle contient quelques exemples pré-chargés comme WordCount.
  • Storm UI, qui permet de suivre l’état des topologies lancées.

 

Lancement et vérification de l’état d’une topologie Storm

Le formulaire de lancement de topologies (onglet Submit Topology) contient les options suivantes :

  • JAR File : topologie existante ou à uploader.


    Dans notre exemple StormStarter – Trident WordCount est choisi.

  • Class Name : classe du JAR utilisée pour soumettre la topologie.
  • Additional Parameters : paramètres requis pour le lancement de la topologie. Dans notre cas, attribution d’un nom à la topologie à lancer.

La configuration donnera :


Un clic sur Submit donnera, si tout va bien, le résultat suivant :


 

A noter que l’opération effectuée n’indique pas si la topologie est terminée. En effet, contrairement aux jobs Hadoop, quand une topologie Storm est lancée, c’est pour une durée illimitée jusqu’à ce qu’elle soit arrêtée par l’utilisateur ou la machine.

 

Le monitoring de la topologie lancée peut se faire en allant dans l’onglet Storm UI :


On peut ainsi avoir un aperçu d’informations telles que :

  • L’état du cluster Storm.
  • L’état de la topologie lancée, dont voici un aperçu, qui montre notamment les actions disponibles pour la topologie (activation, désactivation,…), les spouts et les bolts :


     

    En cliquant sur un spout (ici, spout1) vous pouvez avoir des informations statistiques supplémentaires (l’exécuteur (ou instance) du spout, erreurs, les sorties qui sont des informations sur les données émises par le spout, éventuellement les entrées qui sont des informations consommées par le spout,…) sur celui-ci comme ci-dessous :


    Même chose pour les bolts.

    A noter qu’un clic sur le port de l’exécuteur d’un spout ou d’un bolt permet de consulter le journal de logs des activités associées, et avoir une idée de ce qui a été effectué :


  • L’état et l’hôte (4 noeuds) de chaque superviseur ayant traité la topologie.
  • Des informations sur le Nimbus et le ZooKeeper.

 

Pour aller plus loin…

Gardez un œil ici. D’autres articles autour du Big Data et de HDInsight y seront pondus.

Pour en savoir un peu plus sur les Azure Powershell Cdmlets, vous pouvez également aller ici : http://msdn.microsoft.com/en-us/library/azure/jj554330.aspx.

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