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

scrire les données sur disque tout en exécutant une opération de calcul graphique. Il en résulte une baisse de performances des E/S disque. Dans Apache Tez, en revanche, les données intermédiaires sont transmises directement au nœud suivant dans le graphique de cal- cul, ce qui fait qu’aucune donnée n’est inscrite sur dis- que. Si vous installez Apache Tez en même temps que Hive, Tez devient le moteur d’exécution par défaut. Nous vous recommandons d’utiliser Tez avec Hive, car ce moteur permet généralement d’améliorer les perfor- mances des requêtes Hive. Nous évoquerons plus en détail Apache Tez dans la section de cet article consacrée à l’optimisation des performances. Considérations relatives au stockage de données Hive La meilleure pratique recommandée pour stocker les données dans une mise en œuvre Apache Hive sous AWS est d’utiliser S3, avec des tables Hive construites en sup- plément des fi chiers de données S3. Cette séparation entre les ressources de calcul et de stockage offre la possibilité de créer des clusters EMR transitoires et d’exploiter les données stockées dans S3 à d’autres fi ns. Les deux considérations les plus importantes pour la conception d’un système de stockage de données Apache Hive sous AWS sont : 1) la structure Hive, et 2) le format de stockage des fi chiers dans les buckets S3. Structure de stockage Hive Sous le bucket S3 de niveau supérieur, nous devons organiser les fi chiers de données dans une structure de dossiers qui permette à un moteur de requête d’opti- miser l’accès aux données en évitant d’interroger des tables volumineuses (fi chiers) et en créant une jointure optimisée entre plusieurs tables. Les deux stratégies couramment employées pour réaliser cette optimisation en organisant les données sous S3 sont : 1) le partitionne- ment basé sur Hive, et 2) la création de buckets. Une partition est un répertoire de Hive dans lequel la valeur de la clé de partition est stockée dans le nom du répertoire de partition réel, et où la clé de partition est représentée par une colonne virtuelle dans la table. Dans le cas des buckets, en revanche, chaque unité con- stitue un fi chier contenant les données réelles réparties d’après un algorithme de hachage. La création de buck- ets n’ajoute aucune colonne virtuelle à la table. Cette stratégie d’optimisation du partitionnement se traduit par des réponses plus rapides aux requêtes grâce à l’élimination des partitions et au regroupement des résultats en buckets que permet l’optimisation conjointe. Format de stockage Hive Les éléments à prendre en compte lors du choix du for- mat de fi chier pour le stockage sont les suivants : • Prise en charge du stockage sous forme de colonnes • • • • Possibilité de séparer les entités de stockage Compression Évolution du schéma Capacités d’indexation Nous avons recommandé ORC comme le format de fi ch- ier initialement le plus approprié pour Apache Hive. Les fi chiers ORC sont divisés en bandes qui sont indépen- dantes les uns des autres. Nous pouvons créer des index pour déterminer quelles bandes à l’intérieur d’un fi chier doivent être lues pour une requête donnée, tandis que Bucket S3 Table Transactions Partition Partition Par temps Cluster ID produit Cluster ID produit Figure|2|: Partition et clusters Hive 26 | THE DOPPLER | AUTOMNE 2017 Par temps