Apache Hive : définition et utilisation
De nombreux experts en logiciels prédisent depuis longtemps la disparition du système d’entrepôt des données Apache Hive, mais aujourd’hui, celui-ci est encore utilisé pour gérer d’importants volumes de données. De la même manière, nombreuses sont les fonctions d’Apache Hive à avoir été intégrées aux systèmes suivants. Il peut donc s’avérer bénéfique de s’intéresser plus attentivement sur Hive et ses principales applications.
Qu’est-ce qu’Apache Hive ?
Apache Hive est une extension évolutive de l’application serveur Apache et du framework de stockage Apache Hadoop. Dans les architectures Hadoop, les calculs complexes sont divisés en petits processus, puis répartis en parallèle sur des clusters informatiques composés de nœuds en utilisant le clustering. D’importants volumes de données peuvent donc être traités, même depuis des architectures standard de serveurs et d’ordinateurs. Ici, Apache Hive agit comme un système intégré d’interrogation et d’analyse fondé sur l’open source pour votre entrepôt de données. Hive permet d’interroger, d’analyser et d’agréger les données par l’intermédiaire du langage de base de données HiveQL, similaire à SQL. Grâce à Hive, de grands groupes d’utilisateurs peuvent également accéder aux données Hadoop.
Hive utilise une syntaxe comparable à SQL:1999 pour structurer des programmes, des applications et des bases de données ou encore pour intégrer des scripts. Avant Hive, il fallait s’y connaître en programmation et procédures de programmation Java pour interroger les données avec Hadoop. Hive permet de transposer facilement les interrogations dans le format du système de base de données. Il peut par exemple s’agir de tâches MapReduce. Avec Hive, il est aussi possible d’intégrer d’autres applications fondées sur SQL au framework Hadoop. Comme SQL est très répandu, Hive, qui agit comme une extension de Hadoop, facilite aussi le travail des personnes non initiées avec les bases de données et les volumes de données importants.
Comment fonctionne Hive ?
Avant qu’Apache Hive ne vienne compléter le framework Hadoop, l’écosystème de ce dernier se fondait sur le framework MapReduce développé par Google. Pour Hadoop 1, il était encore implémenté directement dans le framework en qualité de moteur autonome dédié à la gestion, la surveillance et le contrôle des ressources et des processus de calcul. Pour interroger les fichiers Hadoop, il était donc nécessaire de bien connaître Java.
Vous trouverez ci-dessous les principales fonctions d’Hadoop en lien avec l’utilisation et la gestion d’importants volumes de données :
- l’agrégation des données
- l’interrogation
- l’analyse
Le principe de fonctionnement de Hive est simple : grâce à son interface similaire à celle de SQL, les requêtes et les analyses de fichiers Hadoop sont facilement transposées en tâches MapReduce, Spark ou Tez par HiveQL. Hive organise les données du framework Hadoop dans un format de table compatible avec HDFS. HDFS est l’acronyme d’« Hadoop Distributed File System » (« système de fichiers distribués »). Il interroge les données de manière ciblée en passant par des clusters et des nœuds spécifiques au système Hadoop. Des fonctions standard sous forme de filtres, d’agrégations et de jointures sont également disponibles.
Hive et le principe « Schema-on-read » (schéma à la lecture)
Contrairement aux bases de données relationnelles qui fonctionnent selon le principe SoW (Schema-on-write, littéralement « schéma à l’écriture »), Hive se fonde sur le principe SoR (Schema-on-read, littéralement « schéma à la lecture ») : les données sont d’abord stockées telles quelles dans le framework Hadoop. Elles ne sont pas enregistrées dans un schéma prédéfini. Au moment d’une requête Hive, les données sont alors adaptées dans un schéma répondant à vos besoins. Son principal avantage réside dans le Cloud computing, car celui-ci offre davantage d’évolutivité et de flexibilité, ainsi que des temps de chargement plus rapides pour les bases de données distribuées sur différents clusters.
Comment travailler avec des données dans Hive ?
Pour interroger et analyser des données avec Hive, il convient d’utiliser des tables Apache Hive en suivant un schéma d’accès en lecture. Avec Hive, vous pouvez organiser et trier les données de ces tables sous forme de petites unités détaillées ou de grandes unités globales. Ces tables Hive sont divisées en « buckets » (littéralement « compartiments »), qui sont en réalité des blocs de données. Vous pouvez utiliser le langage de base de données HiveQL, semblable à SQL, pour accéder aux données qui vous intéressent. Il est possible, entre autres actions, de réécrire les tables Hive, de les joindre (ou de les annexer) et de les sérialiser dans des bases de données. Chaque table Hive dispose en outre de son propre répertoire HDFS.
Pour garder le contrôle sur votre base de données, optez pour l’offre d’hébergement Linux proposée par IONOS et profitez d’un certificat SSL et d’une protection DDoS, ainsi que de serveurs sécurisés basés en Allemagne.
Hive : principales fonctions
La recherche et l’analyse d’importants volumes et ensembles de données stockés sous forme de fichiers Hadoop dans un framework Hadoop, figurent parmi les principales fonctions de Hive. Hive prend également en charge la transposition de requêtes HiveQL en tâches MapReduce, Sparks et Tez.
Les éléments listés ci-dessous comptent également parmi les fonctions notables de Hive :
- Stockage de métadonnées dans des systèmes de gestion de bases de données relationnelles
- Utilisation de données compressées dans des systèmes Hadoop
- Recours à des UDF (User Defined Functions, littéralement « fonctions définies par l’utilisateur ») pour un traitement et une exploration personnalisés des données
- Prise en charge de différents types de stockage tels que RCFile, Text ou HBase
- Utilisation de MapReduce et prise en charge des processus ETL
Qu’est-ce qu’HiveQL ?
Hive est souvent décrit comme étant « similaire à SQL ». Cela est dû au langage de base de données HiveQL ; s’il se fonde sur SQL, il n’est pas entièrement conforme aux normes telles que SQL-92. D’une certaine manière, HiveQL peut donc aussi être considéré comme un « dialecte » SQL ou MySQL. S’ils se ressemblent beaucoup, plusieurs aspects essentiels permettent d’établir une distinction entre ces deux langages. Ainsi, nombre de fonctions SQL ne sont pas prises en charge par HiveQL, notamment en ce qui concerne les transactions ; la prise en charge des sous-requêtes par ce dernier est également limitée, alors qu’il offre une meilleure évolutivité et davantage de performances dans le framework Hadoop grâce à ses extensions, comme les « Multitable Inserts » (littéralement « insertions multitables »). Le compilateur Apache Hive permet de transposer des requêtes HiveQL dans MapReduce, Tez et Spark.
Utilisez des serveurs dédiés équipés de puissants processeurs Intel ou AMD et louez un serveur Managed chez IONOS si vous ne souhaitez pas investir dans un service informatique.
Apache Hive : protection des données
En intégrant Apache Hive à des systèmes Hadoop, vous pouvez également profiter du service d’authentification Kerberos. Vous pouvez ainsi procéder en toute fiabilité à une authentification mutuelle et fiable et à une vérification entre le serveur et les utilisateurs. En outre, comme le système HDFS définit des autorisations pour les nouveaux fichiers Hive, vous êtes responsables des autorisations en lien avec les utilisateurs et les groupes. En matière de sécurité, un autre aspect essentiel concerne la restauration par Hive des charges de travail critiques en cas d’urgence.
Quels sont les avantages d’Apache Hive ?
Hive propose un grand nombre de fonctions utiles, notamment si vous souhaitez travailler avec d’importants volumes de données dans le cadre du Cloud computing ou du système Big Data as a Service (BDaaS, littéralement « big data en tant que service ») :
- Des requêtes ad hoc
- L’analyse de données
- La création de tables et de partitions
- La prise en charge des liens logiques, relationnels et arithmétiques
- La surveillance et vérification des transactions
- Les rapports en fin de journée
- Le chargement des résultats des requêtes dans des répertoires HDFS
- Le transfert des données de tables dans des répertoires locaux
Les principaux avantages de Hive sont donc les suivants :
- Il permet d’obtenir des informations qualitatives sur d’importants volumes de données, par exemple en ce qui concerne l’exploration de données et l’apprentissage automatique
- Il permet d’optimiser l’évolutivité, la rentabilité et l’extensibilité des grands frameworks Hadoop
- Il permet de segmenter des cercles d’utilisateurs en analysant les flux de clics
- Il ne nécessite aucune connaissance approfondie sur les procédures de programmation Java, et ce, grâce à HiveQL
- Il présente un avantage concurrentiel en favorisant la réactivité et des performances plus rapides et évolutives
- Il permet de stocker des volumes de données pouvant atteindre des centaines de pétaoctets, et jusqu’à 100 000 requêtes de données par heure, même en l’absence d’une infrastructure haut de gamme
- Il permet de garantir une meilleure utilisation des ressources, et donc des temps de calcul et de chargement plus rapides en fonction des charges de travail grâce à sa capacité de virtualisation
- Il permet d’assurer une protection des données satisfaisante et qui résiste aux pannes grâce à de meilleures options de restauration d’urgence et au service d’authentification de Kerberos
- Il permet d’accélérer l’insertion de données en vous évitant d’avoir à transposer les données dans les formats de base des données internes (Hive peut lire et analyser les données, même en l’absence de modification manuelle du format)
- Il fonctionne selon un principe open source
Quels sont les inconvénients d’Apache Hive ?
Le principal inconvénient d’Apache Hive est en rapport avec les nombreux systèmes développés par la suite et dont les performances sont semblables, voire meilleures. Les spécialistes considèrent que Hive est de moins en moins pertinent pour la gestion et l’utilisation des bases de données.
Vous trouverez ci-dessous d’autres inconvénients associés à Hive :
- Aucun accès aux données en temps réel
- Un traitement et une mise à jour complexes des ensembles de données par l’intermédiaire du framework Hadoop avec MapReduce
- Une forte latence qui le rend aujourd’hui plus lent que ses concurrents
Présentation rapide de l’architecture Hive
Les composants ci-dessous comptent parmi les plus importants de l’architecture Hive :
- Metastore : il s’agit de l’emplacement de stockage central de Hive. Il renferme, au format SGBDR (système de gestion de base de données relationnelle), toutes les données et informations pertinentes sur, par exemple, les définitions des tables, les schémas et l’emplacement des répertoires, ainsi que les métadonnées des partitions
- Pilote : il reçoit les commandes envoyées par HiveQL et les traite en utilisant les composants Compiler (« compilateur », pour collecter les informations), Optimizer (« optimiseur », pour déterminer la meilleure méthode d’exécution) et Executor (« exécuteur », pour mettre en œuvre la tâche)
- Ligne de commande et interface utilisateur : il s’agit de l’interface pour les utilisateurs externes
- Serveur Thrift : il permet aux clients externes de communiquer avec Hive et aux protocoles de type JDBC (Java DataBase Connectivity) et ODBC (Open Database Connectivity) d’interagir et d’échanger par l’intermédiaire du réseau
Quelle est l’histoire de la création d’Apache Hive ?
Apache Hive avait pour objectif d’aider les utilisateurs connaissant peu SQL à travailler avec des volumes de données pouvant atteindre plusieurs pétaoctets. Hive a été développé en 2007 par ses fondateurs, Joydeep Sen Sharma et Ashish Thusoo, alors que ceux-ci travaillaient chez Facebook sur le framework Hadoop du réseau social, l’un des plus importants du monde (avec plusieurs centaines de pétaoctets). En 2008, Facebook a décidé de mettre le projet Hive entre les mains de la communauté open source. La version 1.0 a été mise à la disposition du public en février 2015.