Par Maxime Jumelle
CTO & Co-Founder
Publié le 5 avr. 2023
Catégorie Data Engineering
Ces dernières années, on entend beaucoup parler des technologies Big Data et plusieurs outils de traitement de données massives ont vu le jour. Cependant, plusieurs outils disparaissent à cause de leur complexité ou leur non adéquation avec les nouveaux besoins du domaine.
Parmi les frameworks d'analyse du Big Data les plus populaires, on compte notamment Apache Hadoop. Hadoop se révèle idéal pour le stockage et le traitement de quantités massives de données. En revanche, pour l’extraction de données, il est inutilement complexe, chronophage et coûteuse. Fort heureusement, la fondation Apache propose une autre solution pour remédier à ce problème : Apache Hive.
Avant de découvrir Hive, nous devons savoir d'où vient cet outils et pourquoi a-t-il était créé.
Qu’entend-on par « Hadoop » ? Ou, plus important encore, que signifie Hadoop ? Cela signifie High Availability Distributed Object Oriented Platform. Et c’est exactement ce que la technologie Hadoop offre aux développeurs - une haute disponibilité via la distribution parallèle de tâches orientées objet.
Apache Hadoop est un framework Java open source développé en 2006 par Doug Cutting et Michael J. Cafarella et géré par Apache Software Foundation sous licence Apache 2.0. Il s'agit d'un écosystème logiciel qui permet aux entreprises de traiter d’énormes quantités de données en peu de temps. Ceci est accompli en facilitant l’utilisation du traitement informatique parallèle sur une échelle massive.Hadoop est très répandu parce qu'il est à la fois accessible et facile à maîtriser.Il propose des modules avec de nombreuses options et il peut facilement évoluer et être déployé sur plusieurs machines pour s'adapter à quasiment toutes les tailles d'ensembles de données.
À lire aussi : découvrez notre formation Data Engineer
Hadoop n'est pas seulement une application, c'est surtout une plateforme dont les différents éléments intégrés permettent le stockage et traitement de données distribuées. L'écosystème Hadoop comporte des éléments de base indispensables au framework, d'autres sont des éléments complémentaires qui ajoutent des fonctionnalités. Parmi les outils les plus utilisé de l'écosystème Hadoop on trouve HDFS, Pig, YARN, MapReduce, Spark, HBase, Oozie, Zookeeper, et bien evidemment Hive.
Le traitement de données sous Hadoop se base essentiellent sur :
En général, plus le modèle de données se complexifie, plus l'écriture d'un job MapReduce qui les manipule devient fastidieuse. Si nous prenons le simple exemple du Word count que nous trouvons sur la documentation officielle de Hadoop, l’implémentation Java 7 fait une centaine de lignes environ. 😯 Oui, tout ça pour un Word Count avec MapReduce !
Afin de faciliter l’analyse de données stockées dans HDFS sans passer par la complexité de MapReduce, certains frameworks comme Apache Hive sont apparus. Ils proposent alors des langages de haut-niveau comme le très populaire SQL pour lancer des requêtes sur HDFS.
Pour plus d'informations à propos d'Apache Hadoop et HDFS, la formation Apache Hadoop et Spark de Blent couvre tous ces aspects.
Apache Hive est un logiciel libre d'entrepôt de données conçu pour lire, écrire et gérer de grands ensembles de données extraits du système de fichiers distribué d'Apache Hadoop (HDFS).
En effet, il ne s'agit pas d'une base de données complète. Il ne stocke que les métadonnées et les données sont stockées uniquement dans HDFS. Ainsi, chaque requête écrite par l'utilisateur est convertie en code MapReduce qui interagit ensuite avec HDFS. Hive peut être utilisé comme système OLAP (Online Analytical Processing). Il est mieux adapté à l'analyse des données et aux opérations de type Data Mining dans les grands entrepôts de données.
Les bases de données OLAP (Online Analytical Processing) et OLTP (Online Transaction Processing) sont deux types de bases de données utilisées dans les systèmes d'information pour des fins différentes.
Les bases de données OLAP sont principalement utilisées pour l'analyse des données et la prise de décisions stratégiques. Elles sont conçues pour permettre l'analyse de grandes quantités de données de manière rapide et efficace, en utilisant des outils d'analyse de données tels que les cubes OLAP.
À lire aussi : découvrez notre formation Data Engineer
Les bases de données OLTP, en revanche, sont principalement utilisées pour gérer les transactions quotidiennes d'une entreprise, telles que les ventes, les achats et les paiements. Elles sont conçues pour traiter rapidement de nombreuses transactions en même temps, en assurant la fiabilité et l'intégrité des données.
En résumé, les bases de données OLAP sont utilisées pour l'analyse des données à des fins de prise de décision, tandis que les bases de données OLTP sont utilisées pour gérer les transactions quotidiennes d'une entreprise.
Historiquement, Apache Hive est un projet open source qui a été conçu par les co-créateurs Joydeep Sen Sarma et Ashish Thusoo lorsqu'ils travaillaient chez Facebook. Hive a commencé comme un sous-projet d'Apache Hadoop, mais est devenu un projet de haut niveau à part entière.
Avec les limites croissantes d'Hadoop et des jobs MapReduce et l'augmentation de la taille des données, qui sont passées de quelques dizaines de Go par jour en 2006 à 1 To/jour et à 15 To/jour en quelques années. Les ingénieurs de Facebook étaient incapables d'exécuter facilement les jobs complexes avec MapReduce, ce qui a provoqué la création de Hive.
Apache Hive a été créé pour atteindre deux objectifs :
Bien qu'initialement développé dans les locaux de Facebook, Apache Hive est utilisé et développé par d'autres entreprises telles que Netflix. Il est inclut également dans Amazon Elastic MapReduce sur Amazon Web Services.
Apache Hive prend en charge l'analyse de grands ensembles de données stockés non seulement dans HDFS d'Hadoop mais aussi dans des systèmes de fichiers compatibles tels qu'Amazon S3, Azure Blob Storage, Azure Data Lake Storage, Google Cloud Storage et Alluxio.
Il fournit un langage de requête de type SQL appelé HiveQL et permet de convertir de manière transparente les requêtes en jobs Apache Spark, MapReduce et Apache Tez.
Les autres caractéristiques de Hive sont les suivantes :
Hive Data Functions ou les fonctions de données Hive: ce sont des fonctions pré-construite et qui figurent dans le language HQL, permettant le traitement et l'interrogation de grands ensembles de données. Parmi les fonctionnalités fournies par ces fonctions figurent la manipulation de chaînes de caractères, la manipulation de dates, la conversion de types, les opérateurs conditionnels, les fonctions mathématiques, etc.
Fonctions définies par l'utilisateur (UDF ou User Defined Functions) : dans Hive, les utilisateurs peuvent définir leurs propres fonctions pour répondre à certaines exigences et pour gérer les cas d'utilisation non pris en charge par les fonctions intégrées. Celles-ci sont connues sous le nom d'UDFs dans Hive. Les fonctions définies par l'utilisateur sont implémentées en Java et peuvent être ensuite intégrées dans Hive et réutilisées.
Hive peut être facilement intégré avec Apache Spark, en effet il dispose d'une bibliothèque appelée Apache Hive Warehouse Connector (HWC) permettant de travailler plus facilement avec Spark. Elle prend en charge certaines tâches comme le déplacement de données entre les DataFrames Spark et les tables Hive.
Hive dispose de composantes supplémentaire à ses composantes de bases permettant de réaliser plusieurs tâches interessants. Par exemple, on peut installer Hive WebHCat, HCatalog et bien plus, à l'aide de la fonctionnalité Composants facultatifs.
Hive supporte la partition et les buckets pour une récupération rapide et simple des données. Il supporte également plusieurs formats de fichiers tels que ORC, SEQUENCEFILE, RCFILE (Record Columnar File) et TEXTFILE, etc.
Hive permet aussi l'exploitater des données compressées stockées dans l'écosystème Hadoop à l'aide d'algorithmes.
Et bien sûr, aucun outil n'est parfait, et Hive présente lui aussi quelques limites :
Hive se compose principalement de 4 parties essentielles.
Hive fournit différents pilotes pour la communication avec différents types d'applications. Les pilotes Hive prennent en charge les applications écrites dans n'importe quel langage comme Python, Java, C++ et Ruby, entre autres, en utilisant les pilotes JDBC, ODBC et Thrift, pour effectuer des requêtes.
Par exemple pour les applications basées sur Thrift, il fournira un client Thrift pour la communication (Hive Thrift Client).
Pour les applications liées à Java, il fournit des pilotes JDBC. Pour les autres types d'applications, il fournit des pilotes ODBC. Ces clients et pilotes communiquent à leur tour avec le serveur Hive dans les services Hive.
Les interactions des utilisateurs avec Hive peuvent être effectuées par le biais des services Hive. Si l'utilisateur veut effectuer des opérations liées aux requêtes dans Hive, il doit communiquer à travers ces services là.
CLI est l'interface de ligne de commande et Hive Web Interface est l'interface graphique de l'outil. Les deux permettant d'executer les requêtes et les commandes Hive.
Tous les pilotes communiquent avec le serveur Hive et avec le pilote principal des services Hive, comme le montre le diagramme d'architecture ci-dessus. Ce serveur là aussi appelé HiveServer2 accepte les requêtes entrantes des utilisateurs et des applications, crée un plan d'exécution et génère automatiquement un job YARN, MapReduce ou Tez pour traiter ces commande SQL. Le serveur prend également en charge l'optimiseur Hive et le compilateur Hive pour rationaliser l'extraction et le traitement des données.
À lire aussi : découvrez notre formation Data Engineer
Le pilote présent dans les services Hive (Hive driver) représente le pilote principal, et il communique tous les requêtes provenant des clients de types de JDBC, ODBC, ou autres vers le systèmes de stockage des metadonnées pour un traitement ultérieur.
Derby est également un outil de base de données relationnelle open-source qui est livré avec un Hive (par défaut) et qui est la propriété d'apache. HIVE utilise la base de données Derby essentiellement pour le stockage et à des fins de test.
La partie processing ou le moteur d'exécution Hive, a pour rôle de traiter la requête provenant de la partie service et génère des résultats identiques à ceux du MapReduce, YARN ou Tez selon le framework utilisé.
Les services Hive communiquent à leur tour avec le système de stockage de Hadoop et effectuent les actions suivantes:
Apache Hive peut être utilisé dans diverses situations où il est nécessaire de gérer, d'interroger ou d'analyser de gros volumes de données structurées. Il est particulièrement utile dans les environnements de Big Data, où les données sont souvent stockées dans des systèmes distribués tels que Hadoop Distributed File System (HDFS).
Le principal avantage de Hive est qu'il peut facilement gérer de gros volumes de données en les répartissant sur plusieurs nœuds de traitement. Par ailleurs, Hive utilise SQL comme langage de requête, ce qui facilite l'utilisation pour les analystes et les développeurs qui sont déjà familiarisés avec le langage SQL. De plus, s'intègre étroitement avec Hadoop, ce qui en fait un choix populaire pour les environnements de Big Data qui utilisent Hadoop pour stocker des données. Enfin, l'application est également un projet open source maintenu par la fondation Apache, ce qui signifie que de nombreux outils et extensions tiers sont disponibles pour l'utiliser et l'étendre.
En revanche, un des inconvénients principaux est que Hive peut avoir une latence élevée pour les requêtes qui nécessitent une réponse rapide, en raison de son architecture de traitement en batch. Bien que l'utilisation de SQL soit un avantage pour Hive, cela signifie également que certaines requêtes plus complexes peuvent être difficiles à réaliser en utilisant uniquement SQL. Pour terminer, la configuration initiale de Hive peut être complexe et nécessite souvent une connaissance approfondie de Hadoop et de l'environnement d'exécution de Hive. En raison de son utilisation de Hadoop, Hive peut avoir une surcharge de stockage pour les métadonnées nécessaires pour le traitement des requêtes, ce qui peut augmenter les besoins en espace de stockage.
Au final, Hive reste aujourd'hui encore un Data Warehouse très populaire, non seulement parce que de nombreuses entreprises utilisent toujours des clusters Hadoop, que ce soit On-Premise ou dans le Cloud, mais aussi parce qu'il reste performant pour gérer de très gros volumes de données tout en offrant un langage de requête proche du SQL, avec lequel beaucoup de Data Analysts et Data Engineers sont familiers.
Vous souhaitez vous former au Data Engineering ?
Articles similaires
7 févr. 2024
Pendant de nombreuses années, le rôle des Data Engineers était de récupérer des données issues de différentes sources, systèmes de stockage et applications tierces et de les centraliser dans un Data Warehouse, dans le but de pouvoir obtenir une vision complète et organisée des données disponibles.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
4 déc. 2023
Pour de nombreuses entreprises, la mise en place et la maintenant de pipelines de données est une étape cruciale pour avoir à disposition d'une vue d'ensemble nette de toutes les données à disposition. Un des challenges quotidien pour les Data Analysts et Data Engineers consiste à s'assurer que ces pipelines de données puissent répondre aux besoins de toutes les équipes d'une entreprise.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
14 nov. 2023
Pour améliorer les opérations commerciales et maintenir la compétitivité, il est essentiel de gérer efficacement les données en entreprise. Cependant, la diversité des sources de données, leur complexité croissante et la façon dont elles sont stockées peuvent rapidement devenir un problème important.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2024 Blent.ai | Tous droits réservés