The Doppler Quarterly (FRANÇAIS) L'automne 2017 | Page 31

mandations concernant le réglage des performances de Tez sur le Web. Pour notre part, nous conseillons aux praticiens d’intégrer les détails, de comprendre les con- cepts sous-jacents et de faire leurs propres expérimen- tations avec des données réelles. Exécution de requêtes vectorisées Le moteur d’exécution de requêtes par défaut de Hive traite une ligne à la fois. Ce mode de traitement néces- site plusieurs couches d’appels de méthodes virtuelles dans la boucle imbriquée, ce qui se révèle très peu effi - cace du point de vue des performances des processeurs. L’exécution de requêtes vectorisées est une fonctionnal- ité de Hive qui vise à éliminer ces ineffi cacités en effec- tuant une lecture par lots de 1 024 lignes et en appli- quant globalement l’opération à l’ensemble la collection d’enregistrements, plutôt qu’individuellement. Le gain obtenu avec cette méthode d’exécution vectorielle est d’un ordre de grandeur supérieur à la vitesse des opéra- tions exécutées sur les requêtes typiques, telles que les balayages, fi ltres, agrégations et jointures. Pour pouvoir exploiter les requêtes vectorisées, vous devez stocker vos données dans ORC, attribuer la valeur « true » à la propriété format.hive.vectorized.execution.enabled et enfi n, exécuter la requête sur les tables secondées par ORC. Étant donné que l’exécution des requêtes vec- torisées dans les clusters EMR n’est actuellement pas activée par défaut, ce comportement doit être confi guré manuellement dans Hive. Optimiseur basé sur les coûts Le concept d’optimiseur basé sur les coûts, ou CBO (Cost-Based Optimizer) dans Apache Hive est très sem- blable à celui qui est employé dans l’univers des bases de données relationnelles. On rassemble des statistiques telles que le nombre de lignes dans une table ou une par- tition, ainsi que les histogrammes d’une colonne présen- tant un intérêt particulier (qui sert d’entrée pour les fonctions de calcul des coûts d’un optimiseur de requête), de sorte que le CBO puisse comparer différents plans d’exécution des requêtes et sélectionner celui dont le « coût » est le plus faible. Dans certains cas, l’obtention d’une réponse très rapide aux requêtes n’est possible que via l’interrogation de statistiques stockées, au lieu de plans d’exécution à longue échéance. Le moteur CBO de Hive utilise les statistiques contenues dans le Metastore de Hive pour générer des plans de requête de niveau optimum. Deux types de statistiques sont utilisés pour cette optimisation : les statistiques de table (qui portent sur la taille non compressée de la table, le nombre de lignes et le nombre de fi chiers util- isés pour stocker les données), ou bien les statistiques de colonne. L’inconvénient du système CBO est que vous devez recueillir et maintenir des statistiques exactes sur vos tables pour que le moteur d’optimisation basé sur les coûts soit effi cace. Or, la collecte des statistiques de la table est une opération coûteuse ; mais une fois achevée, toutes les requêtes ultérieures impliquant la table béné- fi cient des statistiques ainsi recueillies. Démon LLAP (Long Live and Process) Les performances de Hive se sont accrues à mesure que les exigences en la matière se sont fait jour et que les div- ers composants de la solution, y compris Tez et le moteur CBO, sont venus compléter la donne. LLAP, le démon longue durée qui remplace les interactions directes par le nœud de données HDFS, élève Hive à un niveau de maturité encore supérieur grâce, entre autres, à ses capacités de lecture anticipée et de mise en cache de blocs de colonnes. Un démon LLAP s’exécute sur les nœuds de travail du cluster et traite les E/S, la mise en cache et l’exécution des requêtes fragmentées. L’ensem- ble de l’exécution est planifi é et surveillé par un moteur d’exécution Hive existant (tel que Tez). Le résultat du travail effectué par un démon LLAP peut soit faire partie du résultat d’une requête Hive, soit être transféré vers des tâches externes de Hive, selon la requête défi nie. L’une des exigences clés dans de nombreux environne- ments est de disposer d’un contrôle d’accès ultraprécis au niveau des colonnes. Étant donné que les démons LLAP sont utilisables par d’autres applications, et que le démon est également ouvert à d’autres API optionnelles, il est possible de mettre en œuvre un contrôle d’accès affi né pour une autre infrastructure de traitement de données via LLAP. La possibilité de charger des données dans des entités SQL DataFrame Apache Spark issues d’Apache Hive via le démon LLAP en est un excellent exemple. Dans Apache Ranger, on peut défi nir des con- trôles de niveau d’accès très précis au niveau de la ligne ou de la colonne, ce qu’Apache Spark ne permet pas. Conclusion Apache Hive a considérablement évolué ces dernières années, jusqu’à devenir une plateforme capable de pren- dre en charge les besoins des entrepôts de données Big Data d’une grande entreprise. Dans les premières années, les charges de travail des requêtes qui exigeaient des temps de réponse courts n’étaient pas adaptées à Hive. Par comparaison, aujourd’hui, un système Apache Hive correctement paramétré sur Tez avec une mise en œuvre LLAP permet d’atteindre des temps de réponse inférieurs à la seconde. Une solution d’entrepôt de don- nées fondée sur des cas d’utilisation appropriés et une infrastructure Apache Hive correctement conçue mérite d’être sérieusemen