Bienvenue dans la version préliminaire de Windows Azure HDInsight

Ce billet est co-publié avec Benjamin Guinebertière qui consacre également ce mois-ci un billet à Windows Azure HDInsight sur le blog MSDN Windows Azure France suite à la disponibilité de ce service en version préliminaire (Public Preview) sur le portail de gestion de Windows Azure. Nos deux billets sont complémentaires :)

Windows Azure HDInsight se veut avec les facultés propres à l’environnement Windows Azure le moyen le plus simple de déployer, de gérer et faire passer à l’échelle des solutions basées sur Hadoop.

Une première vue d’ensemble

Fidèles lectrices ou lecteurs de ce blog, comme vous le savez, Windows Azure HDInsight a été développé en partenariat avec le développeur logiciel et distributeur Hadoop Hortonworks.

Il s’appuie sur Hortonworks Data Platform (HDP) 1.1.0 pour mettre à disposition les services Hadoop dans le nuage, et en particulier :

Vous pouvez consulter l’article What version of Hadoop is in Windows Azure HDInsight? pour plus de détails.

Tous ces services et outils fonctionnent « en l'état » comme attendu ; cela signifie que les investissements et les connaissances dans l'un de ces services et outils sont directement opérationnels sous HDInsight et ce tels quels. En outre, d'autres projets dans l'écosystème Hadoop tels que Mahout (Cf. cet exemple) peuvent facilement être utilisés au-dessus d’HDInsight.

Au-delà de ces composantes, Windows Azure HDInsight apporte un ensemble d’éléments additionnels comme :

  • Des mises à jour Hadoop qui assurent les dernières versions stables de HDFS (Hadoop Distributed File System) et Map/Reduce, Pig, Hive, Sqoop, etc. ;
  • Windows Azure Vault (ASV) comme système de fichier par défaut. (HDFS est toujours disponible) ;
  • Un pilote HIVE ODBC;
  • Un SDK pour écrire des « jobs » Hadoop en utilisant le Framework .NET et l’IDE Visual Studio ;
  • Etc.

Nous reviendrons sur ces apports dans la suite de ce billet.

Comme indiqué dans le billet Gartner BI Summit 2013: Bringing Hadoop to the Enterprise et reporté également par Hortonworks, la communauté Hadoop a voté pour passer Hadoop sur Windows dans le tronc principal (main trunc) d'Apache Hadoop. Les équipes d'ingénieurs de Microsoft et d’Hortonworks en collaboration avec la communauté Hadoop ont proposé un certain nombre d'améliorations vis-à-vis des environnements de développement et d’exécution d’Hadoop sur Windows Azure (et Windows Server), améliorations qui sont fusionnées dans le tronc Apache. Toutes ces améliorations sont également incorporées dans Windows Azure HDInsight (et HDInsight Server ainsi d’HDP pour Windows d’Hortonworks).

Le déplacement d’Hadoop sur Windows pour le tronc principal Apache Hadoop et l’investissement continu de Microsoft dans le projet Hadoop sont autant d’éléments qui contribuent à assurer que le choix d’HDInsight par les clients peut se faire en toute confiance, en sachant qu'HDInsight est 100% compatible avec Apache Hadoop, aujourd’hui et dans l'avenir.

HDInsight simplifie également Hadoop en permettant aux clients de déployer des clusters en quelques minutes au lieu de plusieurs heures ou jours. Ces clusters sont dimensionnés avec le nombre de nœuds voulus et s'intègrent avec des outils et des APIs Web simples de façon à assurer que les clients puissent facilement déployer, surveiller et arrêter leur cluster dans le Cloud. En outre, Windows Azure HDInsight s'intègre aux outils de BI (Business Intelligence) de Microsoft, pour permettre aux clients de facilement analyser et interpréter leurs données et recueillir ainsi des informations précieuses pour leur organisation. La présence, par exemple d’un pilote HIVE ODBC permet de coupler Excel avec une source de données HDFS ! Vous êtes ensuite dans Excel que vous connaissez avec ses tableaux croisés dynamiques, ses formules, etc. il convient aussi de citer l’extension Data Explorer à laquelle nous consacrerons prochainement un billet. Vous pouvez vous faire une première idée avec le billet Mashups and visualizations over Big Data and Azure HDInsight using Data Explorer.

Bien commencer avec Windows Azure HDInsight

Si vous disposez d’un compte Windows Azure – si tel n’est pas d’ores et déjà le cas, vous allez pouvoir y remédier dans la suite de ce billet - vous pouvez demander un accès à la version préliminaire publique d’HDInsight et créer alors un cluster HDInsight au sein du portail de gestion de Windows Azure.

La version préliminaire publique de Windows Azure HDInsight est un programme destiné à ce que tout un chacun puisse tester et se familiariser avec le service. Avec cette bêta publique, vous pouvez désormais avoir accès à un cluster qui, contrairement à celui que vous avez pu expérimenter avec Windows Azure HDInsight Service Preview :

  • N’expire pas tant qu’on ne le supprime pas explicitement (vs. 5 jours),
  • Peut avoir jusqu’à 40 nœuds de calcul (data node) (vs. 3 nœuds) de 4 cœurs (vs 2. cœurs).

Ce cluster dispose toujours d’un nœud principal (head node) de 8 cœurs.

Comme vous le verrez, l’un des avantages du service réside dans le fait, que via le portail, les données qui doivent être analysées par le cluster ainsi constitué à la demande peuvent provenir soit du cluster lui-même (comme vous pouvez vous y attendre), soit d’ailleurs, comme par exemple, d’un autre compte Windows Azure (si vous en avez des données sur des « blob storages » Windows Azure) ou bien être le résultat d’un transfert sur le cluster par FTP. Le service s’occupe ensuite de placer vos données pour que ces dernières puissent être prises en compte par le cluster.

La version préliminaire publique permet à l’équipe de développement de collecter vos retours utilisateurs et d’isoler et corriger des bogues non encore identifiées. En retour, Microsoft propose un rabais de 50% sur le coût des machines virtuelles (instances de worker roles) sous-jacentes pour cette période préliminaire.

Il est temps à présent de créer votre cluster.

Obtenir un passe pour accéder à la version préliminaire

De façon à accéder à la version préliminaire publique de Windows Azure HDInsight depuis le portail de gestion Windows Azure, il est avant toute chose nécessaire de disposer d’un compte Windows Azure.

Si tel n’est pas le cas, deux solutions s’offrent à vous si vous ne disposez pas d’ores et déjà d’un compte Windows Azure:

  • Vous avez la possibilité de souscrire à un compte payant, à vous ensuite de gérer votre abonnement et les frais associés. Plus d’informations sur le sujet, vous pouvez consulter les détails de la facturation;
  • Vous pouvez créer un compte de test en profitant de l’offre 90 jours. Attention cependant, le déploiement de Windows Azure HDInsight sur cette offre peut conduire à consommer les ressources incluses assez rapidement. Plus d’informations sur le sujet, vous pouvez consulter le détail de la facturation à la section HDInsight (version préliminaire). Le billet [TUTO] : Comment souscrire gratuitement à Windows Azure ? sur le blog MSDN Windows Azure France propose un pas à pas détaillé pour la création d’un compte de test. Vous pouvez le consulter à cet effet si besoin pour une vue d’ensemble.

Avant de commencer, vous pouvez vérifier si votre compte a déjà accès à la fonctionnalité HDInsight en cliquant sur NOUVEAU en bas à gauche dans le portail de gestion Windows Azure (https://manage.windowsazure.com).

image

Si la fonctionnalité est marquée comme non disponible, il est nécessaire de vous inscrire à la fonctionnalité :

Cliquez sur preview program.

image

Cliquez sur try it now dans la section «Azure HDInsight Preview.

Sélectionnez votre type d’abonnement Windows Azure (ici une évaluation gratuite de 3 mois).

image

Validez la demande. Après cela, il convient d’attendre un courriel d’acceptation de votre « candidature ». Attention toutefois ce courriel peut mettre un certain temps à venir (pour ma part j’ai attendu 4 jours). Les demandes sont validées généralement le mercredi et le week-end donc prenez votre mal en patience ;)

Une fois le courriel reçu, connectez vous à votre compte Azure et rendez-vous sur le portail de gestion de Windows Azure pour créer votre premier cluster. Voyons comment cela se traduit dans la pratique.

Créer un compte de stockage

Rendez-vous sur le portail de gestion de Windows Azure pour créer votre premier cluster.

Un compte de stockage est nécessaire à la création d’un cluster HDInsight car c’est l’un des systèmes de stockage de données disponibles comme abordé précédemment, l’autre étant bien sûr HDFS. HDInsight appelle ce système de fichier ASV (Azure Storage Vault).

Pourquoi deux systèmes de fichiers ? Commençons par le plus connu dans le monde Hadoop. HDFS permet d’exécuter des programmes Map/Reduce conçus pour Hadoop d’une façon générale (et ce indépendamment de la plateforme Azure). Dans la pratique, les données sur HDFS sont stockées sur des disques locaux des nœuds de calcul (data node).

ASV permet aussi d’exécuter des programmes Map/Reduce, mais cette fois sur des données stockées dans le compte de stockage précédent dans des « blobs » Windows Azure. Les performances sont équivalentes; elles peuvent d’ailleurs être meilleures avec ASV. Cela contourne notamment la nécessité de charger des données sur le système HDFS au préalable du traitement.

Au final, la principale différence réside essentiellement dans le fait que les données dans ASV survivent à l’arrêt du cluster HDInsight ; ce qui n’est pas le cas des données HDFS (puisqu’elles sont sur les disques des machines virtuelles (VM) que l’on supprime en arrêtant le cluster). Par ailleurs, certains projets comme l’extension Data Explorer pour Excel - dont nous aurons l’occasion de reparler prochainement - utilisent le système ASV pour récupérer des résultats d’analyses faites sur HDInsight. Nous aurons l’occasion de parler du Data Explorer dans un prochain billet.

Pour revenir à ce compte de stockage pour ASV, il est nécessaire de le créer aujourd’hui dans le centre de données de l’Est des Etats-Unis, comme la version préliminaire publique est disponible uniquement dans ce centre de données pour l’instant.

Pour cela, cliquez sur NOUVEAU et sélectionnez SERVICES DE DONNEES, STOCKAGE, et CREATION RAPIDE.

image

Précisez un nom (« donnee2 » dans l’illustration précédente) et cliquez sur CREER UN COMPTE DE STOCKAGE pour valider.

Créer un cluster HDInsight

Passons à la création du cluster en tant que telle. Celle-ci s’effectue comme suit. Cliquez sur l’icône HDINSIGHT sur la partie gauche du portail.

image

Cliquez sur NOUVEAU puis sélectionnez SERVICES DE DONNEES, HDINSIGHT, et QUICK CREATE.

image

Vous devez préciser un nom pour votre cluster (CLUSTER NAME). Vous devez sélectionner une taille (CLUSTER SIZE) ; La valeur par défaut est 4 (nœuds de calcul) mais 8, 16 et 32 sont aussi disponibles. (Pour choisir plus finement le nombre de nœuds, il faut choisir CUSTOM CREATE au lieu de QUICK CREATE).

Il convient de noter noter que seulement la version 4 sera gratuite. Il est enfin nécessaire de préciser un mot de passe (PASSWORD) pour le cluster. (Le nom d’utilisateur par défaut est par défaut est admin.) Ces informations d’identification vous seront demandées pour accéder au portail Web.

Vous devez enfin sélectionner le compte de stockage précédemment créé (STORAGE ACCOUNT).

Cliquez sur CREATE HDINSIGHT CLUSTER pour valider. Ceci déclenche la création du cluster ; ce qui nécessite quelques minutes.

image

Une fois le cluster prêt, une notification s’affiche dans la barre du bas. De plus, le statut du cluster passe à Running.

image

 

Découvrir le cluster

Toujours depuis le portail de gestion Windows Azure, dans la rubrique HDInsight, vous pouvez voir le cluster activé, en cours d’utilisation.

Pour accéder au Dashboard de votre cluster et commencer à l’utilisation. Cliquez simplement dessus.

image

Une fois dans la page DASHBOARD, cliquez sur le lien présent dans la section Go To Cluster ou bien sur MANAGE dans la barre du bas.

image

Une nouvelle page d’authentification apparaît, précisez avec vos informations d’authentification spécifiées lors de la création du cluster (« admin » et votre mot de passe).

image

Vous accédez alors au portail de votre cluster, ici elephantjaune.azurehdinsight.net.

image

Le portail comporte deux sections principales groupant différents liens (représentés par icones).

Une première section Your Cluster vous permet par le biais de plusieurs méthodes d’interagir et de gérer votre cluster : Interactive Console pour une console pour JavaScript et pour Hive, Remote Desktop pour un accès distant direct au cluster, Job History pour l’historique des « jobs » lancés, Samples pour des exemples« clef-en-main » et prêts à s’exécuter sur Windows Azure HDInsight à l’image du pilote ODBC et l’extension Hive pour Excel) etc.

Il convient d’apporter une petite précision sur Remote Desktop : celui-ci vous amènera sur le nœud principal (head node) du cluster Hadoop. C’est sur celui-ci que sont installés les différents modules complémentaires et que vous pouvez utiliser (via ligne de commande) Hadoop.

La seconde section intitulée Your Tasks vous permet de créer des nouveaux « jobs » et de tracer ceux que vous avez déjà créés ou lancés pour cette session.

Il est temps de s’intéresser à la programmation et aux possibilités apportées par Windows Azure HDInsight en la matière.

Créer des « jobs » avec Windows Azure HDInsight

Comme indiqué en introduction de ce billet, Windows Azure HDInsight s’appuie sur HDP 1.1.0 et propose de fait un degré élevé de fidélité avec l’écosystème Hadoop. En tant que telles, de nombreuses capacités « en l'état » comme attendu.

Un cluster HDInsight est créé avec les projets Apache suivant pour le traitement distribué :

  • Map/Reduce : Map/Reduce constitue en soi une fondation pour le traitement distribué dans Hadoop.  On peut écrire un programme en Java ou tirer parti pour cela d'autres langages et environnements d'exécution grâce à l'utilisation d'Hadoop Streaming. L’article Using MapReduce with HDInsight propose un guide simple pour l’écriture de programmes optimisés sur HDInsight.
  • Hive : Hive est un logiciel d'analyse de données permettant d'utiliser Hadoop avec une syntaxe proche du SQL appelé HiveQL et ce, via un mécanisme permettant de projeter une structure sur ces données. Ceci permet d’exprimer des requêtes qui se compilent en un ensemble de programmes Map/Reduce optimisés. Dans la pratique, Hive propose un support pour la plupart des constructions auxquelles on peut s’attendre dans SQL (agrégation, regroupements, filtrage, etc.), et se parallélise facilement à travers les nœuds de votre cluster. L’article Using Hive with HDInsight vous propose un premier niveau de guide pour utiliser Hive. Vous pouvez également consulter le tutoriel complet Analyzing Twitter Movie Data with Hive in Hadoop on Azure utilisant les données de Twitter.
  • Pig : Pig est une plateforme d'analyse de données comparable à Hive, mais qui utilise un langage de description de flux d’instructions sur les données qui se compile en un ensemble de programmes Map/Reduce à l’aide d’un langage appelé Pig Latin. L’article Using Pig with HDInsight propose un guide de démarrage pour Pig avec HDInsight.
  • Oozie : Oozie est un ordonnanceur de flux de travail (workflow) pour la gestion d'un graphe acyclique dirigé d’actions, où des actions peuvent être des « jobs » Map/Reduce, Pig, Hive ou d'autres « jobs ». Vous trouverez plus de détails dans le guide de démarrage ici.

Le billet de Benjamin Guinebertière offre un tutoriel sur HDInsight pour l’exécution de programmes Map/Reduce, Pig et Hive. Vous pouvez consulter également l’article A Lap Around HDInsight sur HDInsight parcourant les sujets de Map/Reduce, Pig et Hive.

HDInsight propose également un certain nombre de compléments propre pour la programmation.

Microsoft .NET SDK For Hadoop

Les équipes Microsoft en charge d’HDInsight travaillent sur la construction un portefeuille d'outils qui permettent aux développeurs de tirer parti de leurs compétences et des investissements en .NET pour utiliser Hadoop. Ces projets sont hébergés sur la forge CodePlex, avec des paquets disponibles à partir de NuGet pour créer des programmes fonctionnant sur HDInsight.

Les outils/bibliothèques suivants sont aujourd’hui notamment disponibles sur la forge sous forme d’un paquet NuGet :

  • .NET Map/Reduce : .NET Map/Reduce est un « wrapper » .NET de la bibliothèque Java Hadoop Common pour écrire un programme Map/Reduce.
  • LINQ to Hive : LINQ to Hive permet d’utiliser des requêtes LINQ sur des données gérées par Hive installé (par défaut) sur votre cluster HDInsight. Il est ainsi possible par exemple de créer une base de données Hive sur votre cluster HDInsight, puis, développer une application cliente sur votre machine personnelle qui requête cette base Hive avec LINQ.
  • WebHDFS Client : WebHDFS Client est une abstraction .NET du système de fichiers HDFS d’Hadoop. Il permet ni plus ni moins de créer, de lire, ou de supprimer des fichiers contenu sur votre cluster Hadoop programmatiquement parlant. Il utilise pour cela le service REST WebHDFS du cluster HDInsight.

Pilote HIVE ODBC

Le pilote HIVE ODBC disponible dans la rubrique Downloads du portail de gestion de votre cluster HDInsight permet de faire la connexion entre une table Hive et Excel (ou tout autre client ODBC).

L’article [How to Connect Excel to Windows Azure HDInsight via HiveODBC](file:///C:\Users\philber\AppData\Local\Microsoft\Windows\Temporary%20Internet%20Files\Content.Outlook\9W29WWNA\o%09https:\www.windowsazure.com\en-us\manage\services\hdinsight\use-excel-via-hive-odbc-driver\) vous propose un pas à pas complet.

Pour aller plus loin avec Windows Azure HDInsight

Nous en avons bien conscience, ce billet ne fait qu’effleurer le champ des possibles et il existe beaucoup d’autres fonctionnalités à découvrir dans Windows Azure HDInsight. Ainsi, par exemple, si l’installation depuis le portail d’un cluster HDInsight a été abordée, il est tout à fait possible de réaliser le même type d’opération par API. Un tel déploiement de cluster est décrit dans l’article Deploying an HDInsight Service Cluster Programmatically.

Toujours dans le registre de l’automatisation, l’automatisation de l’exécution des jobs cette fois peut s’effectuer via WebHCat (également référencé sous l’appellation Templeton) comme documenté dans l’article Executing Remote Jobs on Your HDInsight Cluster Programmatically.

Les consoles interactives en JavaScript et Hive permettent une connexion au cluster via une interface Web comme décrit avec l’article HDInsight Service Interactive JavaScript and Hive Consoles.

Tout cela représente autant de pistes d’exploration pour faire le meilleur usage du service Windows Azure HDInsight. Ceci étant, au-delà des éléments apportés par ce billet ou par celui de Benjamin, vous pouvez également vous reporter :

Comme le titre ce billet, bienvenue dans la version préliminaire de Windows Azure HDInsight et bonne découverte !