Section courante

A propos

Section administrative du site

Entrepôts de données et lacs de données

Cette page discute des sujets suivants : comprendre les idées derrière Apache Hadoop et HDInsight, exécuter des requêtes Apache Hive et une tâche Apache Pig sur un unité d'allocation Hadoop et un examen des performances des tâches Hadoop.

Depuis Visual Studio 2017 et quelques ajouts à Azure, il est possible de manipuler les mégadonnées (Big Data), mais également d'examiner les outils disponibles pour vous aider. Dans cette page nous abordons certaines des idées de base d'Apache Hadoop, ainsi qu'un examen des outils apportés par Visual Studio 2017.

C'est quoi Apache Hadoop ?

Vous n'êtes certainement pas la première personne à poser cette question, et vous ne serez pas la dernière. Si vous développez dans l'espace Microsoft, il est fort probable que vous posiez également des questions sur HDInsight. Heureusement, ces deux questions sont liées. HDInsight est l'implémentation basée sur l'infonuagique de Hadoop trouvée dans Azure. Ainsi, une discussion sur Hadoop est également une discussion sur HDInsight.

La compréhension de Hadoop repose sur la compréhension de deux concepts fondamentaux : le système de fichiers distribué Hadoop et MapReduce. Une fois que vous les comprenez, vous pouvez envisager des composantes supplémentaires, HDInsight et Azure Data Lake.

Système de fichiers distribué Hadoop (Hadoop Distributed File System)

Comme on peut s'y attendre de quelque chose avec le mot «big» (en anglais) ou mégadonnées dans son nom, on s'attend à ce que les mégadonnées fonctionne avec de gros volumes de données. Ces données peuvent être structurées (par exemple, contenir des colonnes de données bien définies, similaires à une base de données ou à un fichier journal) ou non structurées (comme un flux Facebook ou Twitter). Mais quelle que soit leur forme, il y a une grande quantité de données, et ces données devront être entreposées.

Le système de fichiers distribué Hadoop HDFS (Hadoop Distributed File System) est conçu pour répondre à ce besoin. Il est conçu pour permettre à un ou plusieurs fichiers d'être placés sur plusieurs serveurs différents. Ainsi, si vous aviez 10 millions de fichiers à entreposer, mais que chaque serveur ne pouvait en entreposer que 500 000, vous pourriez utiliser HDFS pour placer ces fichiers sur plus de 20 serveurs différents. Alternativement, si vous aviez un seul fichier d'une taille de 20 téraoctets et que chaque serveur ne pouvait entreposer que 500 Go, HDFS vous permettrait de distribuer ce fichier sur plus de 40 serveurs différents.

À ce niveau, la fonctionnalité de HDFS n'est pas si différente de tout autre système de fichiers distribué. Cependant, l'une des forces de HDFS est qu'il a été conçu pour être tolérant aux pannes. La raison de ce choix de conception est que l'un des objectifs architecturaux de HDFS était de pouvoir fonctionner sur du matériel de base. Lorsque vous travaillez avec de grands unités d'allocations, le terme "matériel de base" est souvent synonyme de "non fiable", c'est-à-dire qu'il existe une possibilité non nulle et non négligeable qu'un noeud d'un unité d'allocation tombe en panne à tout moment. HDFS a donc été conçu pour permettre la détection rapide de la défaillance de n'importe quel noeud et sa récupération automatique.

MapReduce

L'idée derrière MapReduce est presque époustouflante dans sa simplicité. Si vous considérez à quoi ressemblent la plupart des applications pilotées par les données, il existe une partie client et une partie serveur. La partie serveur peut également inclure un serveur Web (si l'application est basée sur le Web), mais il y aura un serveur de base de données utilisé quelque part dans l'architecture. Lorsque la partie client de l'application a besoin de données, elle fait une demande au serveur. Les données sont ensuite transportées, généralement à travers un réseau, du serveur au client.

Considérez maintenant à quel point cette architecture peut être problématique si vous avez besoin d'accéder à des fichiers volumineux. Même avec un réseau Ethernet 10 Gigabit, un fichier de 10 To prendrait plus de deux heures à transférer. Cela n'augure rien de bon pour le temps de réponse d'une application traditionnelle basée sur les données.

Le MapReduce inverse cette architecture. Il part du principe que lorsque vous travaillez avec une grande base de données, il est moins coûteux de déplacer le calcul que de déplacer les données. MapReduce offre aux développeurs un cadre pour cartographier leurs fonctionnalités de calcul sur les mêmes noeuds que les données. Ensuite, lorsque le calcul est terminé, seuls les résultats sont renvoyés vers un emplacement central (réduit) pour un traitement ultérieur.

Composants supplémentaires

Le Hadoop ne s'arrête pas à ces HDFS et MapReduce. Pour créer un environnement de production entièrement pris en charge, un certain nombre d'autres éléments doivent être pris en compte. Ceux-ci incluent les suivants :

Composante Description
YARN Plate-forme responsable de la planification des tâches et de la gestion des ressources utilisées dans l'environnement Hadoop.
Hive Un entrepôt de données construit sur Hadoop. En raison de la structure de Hadoop, les requêtes ad hoc sont particulièrement bien prises en charge. Apaache Hive permet d'interroger de grands ensembles de données dans une interface similaire à SQL.
HBase Une implémentation NoSQL ayant été construite sur HDFS. Bien que cela ne remplace pas une base de données SQL classique, il existe une autre composante, Apache Trafodion, visant à fournir une interface ODBC (Open DataBase Connectivity) à HBase.
Storm Permet aux données dans HDFS d'être traitées en temps réel, contrairement au traitement par lots mis en ouvre dans MapReduce.

Naturellement, il existe encore plus de composants disponibles, selon le type de fonctionnalité dont vous avez besoin. Hadoop est un projet open source très populaire avec une communauté d'utilisateurs importante et active.

HDInsight

HDInsight est une distribution infonuagique de la pile technologique Hadoop. Plus précisément, il se compose de HDFS, YARN et MapReduce. Cependant, pour faciliter le démarrage dans Hadoop, Azure propose un certain nombre d'unité d'allocations préconfigurés parmi lesquels vous pouvez choisir :

Type d'unité d'allocation Description
Hadoop La combinaison de base de HDFS, YARN et MapReduce. C'est votre choix si vous souhaitez utiliser la plate-forme Hadoop standard.
HBase Inclut la composante HBase pour permettre la prise en charge de NoSQL pour les données sous-jacentes.
Hive Ajoute la prise en charge de l'interrogation interactive de l'ensemble de données sous-jacent à l'aide de la composante Hive.
Kafka Semblable à Storm, en ce sens qu'il offre la possibilité de traiter les données Hadoop en tant que flux, il inclut une fonctionnalité de courtier de messages, qui permet des fonctionnalités de publication et d'abonnement sur un flux.
R Server Ajoute le serveur R sur chacun des noeuds pour prendre en charge l'analyse des données basée sur R.
Spark Ajoute la composante Spark prenant en charge le traitement en mémoire des données pour améliorer les performances.
Storm Inclut la composante Storm à l'implémentation Hadoop pour permettre le traitement en temps réel du flux de données.

Comme vous pouvez le constater, les choix s'offrant à vous sont assez variés. L'une des garanties qu'apporte Azure est que des fonctionnalités sont ajoutées régulièrement. De nouvelles options émergent toujours.

Azure Data Lake

L'offre Azure Data Lake s'intègre également dans l'image Hadoop. En bref, un lac de données est un référentiel capable de contenir tout type de données, quelle que soit sa taille ou sa structure. Il peut gérer un gros fichier ou de nombreux petits fichiers. Parallèlement à cette capacité d'entreposage illimitée, Azure Data Lake est conçu pour gérer un volume élevé de petites écritures à un faible niveau de latence. D'un point de vue pratique, si vous avez un système qui génère rapidement un grand volume de données (comme un réseau d'appareils de l'Internet des objets [IoT]), alors il peut être écrit dans le lac de données sans ralentir le reste du système ou prendre du retard sur l'ingestion.

Au niveau de l'implémentation, Azure Data Lake est un HDFS, ce qui signifie que vous pouvez l'utiliser comme entreposage pour un unité d'allocation Hadoop. Mais il peut également être utilisé pour prendre en charge d'autres applications analytiques, comme R-Enterprise (de Revolution) ou Cloudera.

Outils de lac de données pour Visual Studio

Vos déploiements HDInsight et Azure Data Lake dans Azure peuvent être gérés et utilisés via Visual Studio 2017. Pour ce faire, vous pouvez installer Stockage et traitement des données (sur la version anglais Data Storage and Processing workload) à l'aide du programme d'installation de Visual Studio :

Cette charge de travail inclut les SDK nécessaires pour se connecter à vos ressources HDInsight et Azure Data Lake. De plus, il ajoute un certain nombre de modèles à Visual Studio facilitant la création de projets utilisant ces ressources.

Afin de démontrer certains de ces modèles, vous devez disposer d'un déploiement HDInsight dans votre compte Azure. Pour la plupart des gens, cela signifie en créer un. Gardez à l'esprit que bien que la création d'un unité d'allocation HDInsight soit très simple, il n'est pas bon marché de le maintenir opérationnel. Ce n'est pas la même chose qu'une simple application Web, accessible pour quelques dollars par mois ou moins. Un unité d'allocation HDInsight de base comprend 6 serveurs utilisant 40 coeurs, à un coût horaire s'additionnant rapidement. Soyez donc prévenu.

Des détails sur vos unités d'allocations HDInsight sont disponibles via l'Explorateur de serveurs (sur la version anglaise Server Explorer), comme illustré dans l'image suivante :

Sous votre noeud Azure dans l'Explorateur de serveurs, vous verrez un noeud HDInsight. Le développement de ce noeud affiche tous les déploiements HDInsight dans votre abonnement. Chacun de ces déploiements peut être développé davantage pour afficher la base de données, l'entreposage et les fichiers journaux associés au unité d'allocation.

Les capacités de gestion via l'Explorateur de serveurs sont relativement limitées. Par exemple, vous ne pouvez pas créer d'unité d'allocation HDInsight via l'Explorateur de serveurs, bien que vous puissiez vous connecter à un unité d'allocation existant si vous connaissez l'URL de connexion, le nom d'entreposage, la clef et les informations d'identification de l'administrateur de l'unité d'allocation. Ce processus est lancé en cliquant avec le bouton droit sur le noeud HDInsight et en choisissant l'option Ajouter un unité d'allocation HDInsight dans le menu contextuel.

Si vous cliquez avec le bouton droit sur un unité d'allocation existant, plusieurs choix s'offrent à vous. Du point de vue de la gestion, vous pouvez choisir de gérer votre unité d'allocation via le portail Azure en sélectionnant l'option Manage Cluster dans le portail Azure. Vous pouvez exécuter une requête Hive ou afficher les tâches en cours d'exécution dans l'unité d'allocation.

Pour une base de données Hive individuelle, vous avez la possibilité de créer une table via l'Explorateur de serveurs. Cliquez avec le bouton droit sur la base de données et sélectionnez l'option de menu Créer une table.

Ce concepteur est utilisé pour créer des instructions HQL (Hive Query Language) créant des tables dans Hive. Comme vous pouvez le voir dans la partie inférieure de l'écran, la syntaxe de HQL est similaire à celle de T-SQL. La partie supérieure de l'écran vous donne une référence visuelle pour certaines des options, mais si vous avez les compétences, vous pouvez toujours écrire le HQL directement. En haut, vous pouvez définir les colonnes et les types de données apparaissant dans le tableau, donner un nom au tableau et indiquer si le tableau sera externe (stocké sous forme de fichier dans le système de fichiers) ou simplement conservé dans la base de données. Dans les paramètres avancés, vous pouvez choisir le format de fichier (le choix est un fichier texte) et spécifier le champ (ou la colonne), la collection (ou la ligne) et les délimiteurs de clef de carte.



Dernière mise à jour : Vendredi, le 9 juin 2023