Aperçu d'Apache Hive
Apache Hive est le moteur SQL-sur-Hadoop qui rend l'entreposage de données à grande échelle accessible aux analystes et ingénieurs qui connaissent déjà SQL. ODP 1.3.1.0 embarque Hive 4.0.1, la dernière version majeure, qui apporte le support ACID complet, les vues matérialisées et l'intégration native d'Iceberg.
Qu'est-ce que Hive ?
Hive traduit le HiveQL (un dialecte SQL) en plans d'exécution distribués qui s'exécutent sur YARN via le moteur Tez. Les données résident dans HDFS (ou Ozone) et sont généralement stockées dans des formats orientés colonne tels qu'ORC ou Parquet. Hive fournit un Metastore — une base de données relationnelle (PostgreSQL dans ODP) qui enregistre les schémas de tables, les informations de partition et les statistiques — que d'autres moteurs comme Spark et Impala peuvent également interroger.
Architecture de Hive 4
HiveServer2
HiveServer2 (HS2) est le serveur JDBC/ODBC auquel les clients se connectent. Il accepte les requêtes HiveQL, les compile en un plan logique, optimise ce plan et soumet l'exécution à YARN. HS2 est multi-tenant : il gère des sessions concurrentes avec une isolation au niveau de la session. ODP déploie plusieurs instances HS2 derrière un équilibreur de charge pour garantir la disponibilité.
Metastore
Le Hive Metastore est le registre central de schémas de l'écosystème Hadoop. Il stocke :
- Les définitions de bases de données et de tables (colonnes, types, SerDe)
- Les métadonnées de partition (essentielles pour l'élagage des requêtes à grande échelle)
- Les statistiques de tables utilisées par l'optimiseur basé sur les coûts
- Les propriétés des tables Iceberg lors de l'utilisation du catalogue Iceberg
Le Metastore expose une API Thrift consommée par HiveServer2, Spark, Impala, Trino et d'autres moteurs — en faisant la couche d'interopérabilité de facto du lakehouse.
Moteur d'exécution Tez
Hive 4 exécute les requêtes via Apache Tez, un framework d'exécution basé sur les DAG qui remplace l'ancien moteur MapReduce. Tez élimine l'étape d'écriture dans HDFS entre les étapes, conserve les données intermédiaires en mémoire ou sur disque local, et réutilise les conteneurs JVM entre les tâches. Pour les requêtes analytiques typiques, Tez est 2 à 10 fois plus rapide que MapReduce.
Transactions ACID
Hive 4 fournit une sémantique ACID complète (Atomicité, Cohérence, Isolation, Durabilité) sur les tables ORC, notamment :
- Les instructions
INSERT,UPDATE,DELETEetMERGE(upsert) - L'isolation en lecture via le contrôle de concurrence multi-version (MVCC)
- La compaction automatique des fichiers delta pour maintenir les performances de lecture
Les tables ACID dans Hive nécessitent le format de stockage ORC et une propriété de table transactionnelle. Dans ODP, ACID est activé par défaut pour les tables gérées.
Vues matérialisées
Hive 4 supporte les vues matérialisées — des résultats de requêtes précalculés stockés sous forme de tables physiques. L'optimiseur de requêtes réécrit automatiquement les requêtes éligibles pour utiliser les vues matérialisées lorsque cela réduit le coût, accélérant de façon transparente les tableaux de bord et les modèles analytiques répétés sans nécessiter de modifications applicatives.
Intégration Iceberg dans ODP 1.3.1.0
ODP intègre Iceberg 1.6.1 comme format de table de première classe aux côt és d'ORC. Hive 4 peut créer et interroger des tables Iceberg nativement :
CREATE TABLE evenements (
event_id BIGINT,
event_time TIMESTAMP,
payload STRING
)
STORED BY ICEBERG
STORED AS PARQUET;
Les tables Iceberg gérées via Hive sont lisibles par Spark, Impala et Trino sans conversion de format, permettant de véritables architectures lakehouse multi-moteurs. Voir l'Aperçu d'Apache Iceberg pour plus de détails.
Hive Warehouse Connector (HWC)
Le Hive Warehouse Connector permet aux applications Spark de lire et d'écrire dans les tables ACID et Iceberg de Hive avec des garanties transactionnelles complètes. Sans HWC, Spark lit les tables Hive via une couche de compatibilité qui contourne la sémantique ACID. HWC fournit :
spark.read.format("com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector")pour les lectures par lot- Des écritures en streaming vers les tables ACID Hive depuis Spark Structured Streaming
- Un accès cohérent aux métadonnées via le Hive Metastore
ODP livre HWC préconfiguré pour les versions déployées de Hive et Spark.
Quand utiliser Hive vs Impala vs Trino
| Cas d'usage | Moteur recommandé |
|---|---|
| ETL par lots volumineux / transformations complexes | Hive (Tez, ACID complet, UDFs) |
| Requêtes BI interactives sur HDFS/Iceberg (<30s) | Impala (MPP, latence minimale) |
| Requêtes fédérées sur plusieurs sources de données | Trino (connecteurs SGBDR, object store, Hive) |
| Ingestion en streaming dans les tables ACID Hive | Hive (via HWC + Spark Streaming) |
| Exploration ad hoc par des analystes SQL | Hive ou Trino selon les besoins de latence |
Hive est le bon choix quand la complexité des requêtes, les garanties ACID ou les charges de travail par lots de longue durée importent plus que la latence inférieure à la seconde. Pour les tableaux de bord interactifs sur des données pré-agrégées, Impala ou Trino surpasseront généralement Hive.