Hadoop le temps d’un job

Une des caractéristiques intéressantes du cloud est l’élasticité, c’est-à-dire la capacité à mobiliser et à ne payer les ressources utiles que pendant le temps où on en a besoin.

C’est une des raisons pour lesquelles HDInsight Service propose de stocker les données dans le système de fichiers distribué standard d’Hadoop HDFS, mais aussi et par défaut dans le système de fichiers distribué de Windows Azure sous forme de blobs (ASV = Azure Storage Vault). En effet, on peut stocker et continuer d’accumuler des données dans ASV 24h/24 et ne démarrer un ou plusieurs clusters HDInsight pour effectuer des traitements sur ces données que pour le temps d’exécution des jobs. De même, on peut continuer de consommer les données alors que le cluster est arrêté. Ce modèle permet une réduction des coûts dans la plupart des cas. J’avais écrit il y a un certain temps un billet sur le sujet, si cela vous intéresse de creuser. Depuis l’écriture de ce billet, les prix ont baissé mais le raisonnement reste valable. Parmi ces modifications, le prix des transactions sur le stockage a été divisé par 10 en Juin 2012 (il est maintenant de l’ordre de 1$ par 10 000 000 transactions). Et surtout, on est passé très récemment à la facturation à la minute des machines virtuelles (voir l’annonce ici).

 

Autant faut-il pouvoir automatiser l’éxécution des jobs, mais également la création et la suppression du cluster Hadoop lui-même. Il est prévu qu’HDInsight puisse être géré avec le module Azure de PowerShell téléchargeable dans la section download de https://windowsazure.com. Aujourd’hui, le module est en cours de développement et est disponible sur codeplex. Cela permet la création d’un cluster HDinsight avec ce type de commande:

image

et la suppression de la façon suivante:

image

 

Carl Nolan, qui blogue très régulièrement sur le SDK C# d’HDInsight, fournit un exemple beaucoup plus complet et détaillé dans son billet (en anglais)

 Managing Your HDInsight Cluster with PowerShell.

Dans son exemple, le job exécuté est écrit en Map/Reduce en C# mais on peut aussi automatiser d’autres types de jobs tels que des jobs PIG ou HIVE par exemple. On peut s’inspirer pour cela du billet et de la documentation sur CodePlex.
[Mise à jour 19 juin 2013] Hier, Carl Nolan a écrit un article détaillé sur l’automatisation avec Hive: Managing Hive Job Submissions With PowerShell.

 

Smile

Benjamin