Apache Hive, c'est quoi ?

Hive est une infrastructure de calcul open source qui simplifie la lecture, la rédaction et la gestion de jeux de données imposants stockés dans des systèmes distribués tels que HDFS (système de fichier distribué Hadoop) ou d'autres systèmes Blob compatibles comme Amazon S3.

Bien qu'à l'origine, Hive ait été développé pour les tâches MapReduce, la plupart des installations modernes de Hive utilisent Tez, dont l'architecture est similaire à celle de Spark. Hive permet de réaliser des analyses à l'aide de HiveQL, un langage proche de SQL et offre tous les avantages de Hadoop, comme l'évolutivité, la redondance et la capacité de traiter des jeux de données importants.

Créé par Facebook en 2008 en vue d'exécuter d'exploiter l'énorme volume de données générées par les utilisateurs, Hive est le SQL le plus vieux et le plus mature disponible sur moteur Hadoop. Hive est donc le système que les organisations à la recherche du SQL le plus stable sur Hadoop préfèrent.

Considérations pour Apache Hive

Stabilité

Développé en 2008, Hive est le SQL le plus stable et le plus mature, avec cinq ans d'avance, sur moteur Hadoop. Il est toujours en cours de développement à ce jour.

Débit de requête

Hive est capable de lier des tables extrêmement lourdes (milliard de lignes) en toute simplicité. Tandis que les moteurs SQL en mémoire plus rapides n'arrivent parfois pas à exécuter des requêtes portant sur plusieurs tables de faits de grande taille, le moteur de Hive est capable de lier ces tables en toute simplicité. De plus, la version moderne de Hive sur Tez ne nécessite plus de choisir entre débit élevé et requêtes rapides.

Une communauté de développement renforcée

L'un des principaux avantages de Hive, c'est que le système s'appuie sur la communauté open source et qu'il dispose d'une assistance communautaire. L'initiative Stinger est un exemple de cette assistance, il s'agissait d'un mouvement de la communauté de développement de Hive visant à développer des requêtes interactives et de nouvelles fonctions pour Hive, ce qui a permis de créer Tez, un nouveau moteur d'exécution Hive.

Dans quel cadre Hive est-il idéal ?

Un traitement par lot et ETL

Yahoo! JAPAN a testé l'exécution par lot d'un échantillon de 2 000 requêtes SQL aléatoires sur Hive et Impala, et les résultats sont épatants. La majeure partie des 2 000 requêtes (environ 1 800) ont été exécutées en moins de 20 secondes, avec une vitesse d'exécution variée. Le fait que Hive permette le traitement massivement parallèle des lots représente un avantage de taille face à la concurrence.

L'architecture Hive

À l'origine, Apache Hive a été développé pour traduire les requêtes SQL en processus MapReduce, mais au vu de la latence importante de l'exécution des requêtes avec MapReduce, le système Hive moderne utilise Tez, une infrastructure d'application qui évite l'écriture des opérations intermédiaires sur le disque.

L'équipe de Spry a effectué des tests de comparaison de Hive sur MapReduce, Hive sur Tez et deux autres SQL sur moteur Hadoop, et la performance de Hive sur Tez était au moins égale, et parfois supérieure, à celle du moteur de requête le plus rapide pour différents types de requêtes.

Types de données

Hive peut traiter des données structurées, semi-structurées (JSON, XML, logs, etc.) et non structurées. Un SerDe (serializer, deserializer) peut être nécessaire pour indiquer à Hive comment traiter les données semi-structurées ou non structurées.

Étendue de la ligne (quantité)

Hive est conçu pour écrire d'énormes requêtes afin de traiter une quantité impressionnante de données. En 2014, Facebook stockait plus de 300 Po de données Hive, avec 600 To de données générés chaque jour.

Utilisation et gestion de Hadoop Hive

Après le chargement des données dans HDFS ou un autre système de fichier distribué, il est possible de créer des tables Hive portant sur les données. il existe deux types de tables dans Hive, les tables externes et internes (gérées), qui vous permettent de contrôler la manière de charger, de contrôler et de gérer les données. La principale différence entre les deux types de tables, c'est que lorsque vous supprimez une table interne, les métadonnées et les données sous-jacentes sont toutes supprimées. Lors de la suppression d'une table externe, seules les métadonnées sont supprimées, alors que les données sous-jacentes existent toujours sur HDFS.

La commande CREATE TABLE crée et définit une nouvelle table dans Hive. La commande CREATE peut inclure une clause PARTITIONED BY afin de définir les colonnes de partition. Le partitionnement indique à Hive comment structurer le stockage des données. Chaque partition créera un sous-répertoire qui stocke les données de la partition en question. Outre le partitionnement, Hive permet aussi de procéder au bucketing, l'organisation des données de chaque partition en plusieurs fichiers, avec la clause CLUSTERED BY. Le bucketing peut améliorer la performance pour certains types de joints ; il est surtout efficace pour les champs à cardinalité élevée.

Après avoir créé une table, il est possible de charger les données directement depuis un fichier à l'aide de la commande LOAD DATA, ou de les insérer depuis une requête avec la commande INSERT.

Maintenance

L'une des améliorations les plus rapides à effectuer pour votre cluster Hive est de passer sur Apache Tez si vous ne l'avez pas encore fait. Les autres techniques comprennent l'usage de différents types de fichier afin d'optimiser la compression et la lecture, et la refactoration de l'architecture de votre table afin d'optimiser la performance de requête.

Prenez goût à l'analytique

Business intelligence, analyse de big data ou vue client à 360° :
quels que soient vos besoins, Looker peut vous aider. Parlez à nos experts en données.

Demander une démo