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