Les formats de fichiers dans le big data : un petit programme pédagogique

Les formats de fichiers dans le big data : un petit programme pédagogique
Météo Divinité par Remarin

Équipe Solutions Cloud Mail.ru offre traduction d'articles l'ingénieur Rahul Bhatia de Clairvoyant sur les formats de fichiers disponibles dans le Big Data, quelles sont les fonctionnalités les plus courantes des formats Hadoop et quel format est préférable d'utiliser.

Pourquoi différents formats de fichiers sont-ils nécessaires ?

Un goulot d'étranglement majeur en termes de performances pour les applications compatibles HDFS telles que MapReduce et Spark est le temps nécessaire à la recherche, à la lecture et à l'écriture des données. Ces problèmes sont aggravés par la difficulté de gérer de grands ensembles de données si nous avons un schéma évolutif plutôt que fixe, ou s'il existe des contraintes de stockage.

Le traitement du Big Data augmente la charge sur le sous-système de stockage : Hadoop stocke les données de manière redondante pour atteindre la tolérance aux pannes. Outre les disques, le processeur, le réseau, le système d'entrée/sortie, etc. sont chargés. À mesure que le volume de données augmente, le coût de leur traitement et de leur stockage augmente également.

Différents formats de fichiers dans Hadoop inventé pour résoudre précisément ces problèmes. La sélection du format de fichier approprié peut offrir des avantages significatifs :

  1. Temps de lecture plus rapide.
  2. Temps d'enregistrement plus rapide.
  3. Fichiers partagés.
  4. Prise en charge de l'évolution du schéma.
  5. Prise en charge étendue de la compression.

Certains formats de fichiers sont destinés à un usage général, d'autres à des usages plus spécifiques et certains sont conçus pour répondre à des caractéristiques de données spécifiques. Le choix est donc vraiment très large.

Format de fichier Avro

Pour sérialisation des données Avro est largement utilisé - il basé sur une chaîne, c'est-à-dire un format de stockage de données de chaîne dans Hadoop. Il stocke le schéma au format JSON, ce qui le rend facile à lire et à interpréter par n'importe quel programme. Les données elles-mêmes sont au format binaire, compactes et efficaces.

Le système de sérialisation d'Avro est linguistiquement neutre. Les fichiers peuvent être traités dans une variété de langages, actuellement C, C++, C#, Java, Python et Ruby.

Une caractéristique clé d'Avro est sa prise en charge robuste des schémas de données qui changent avec le temps, c'est-à-dire évoluent. Avro comprend les modifications de schéma : suppression, ajout ou modification de champs.

Avro prend en charge une variété de structures de données. Par exemple, vous pouvez créer un enregistrement contenant un tableau, un type énuméré et un sous-enregistrement.

Les formats de fichiers dans le big data : un petit programme pédagogique
Ce format est idéal pour écrire dans la zone d'atterrissage (de transition) d'un lac de données (lac de données, ou lac de données - une collection d'instances permettant de stocker directement divers types de données en plus des sources de données).

Ainsi, ce format est le mieux adapté pour écrire dans la zone d’atterrissage d’un lac de données pour les raisons suivantes :

  1. Les données de cette zone sont généralement lues dans leur intégralité pour un traitement ultérieur par les systèmes en aval – et un format basé sur les lignes est plus efficace dans ce cas.
  2. Les systèmes en aval peuvent facilement récupérer des tables de schéma à partir de fichiers : il n'est pas nécessaire de stocker les schémas séparément dans un méta-stockage externe.
  3. Toute modification du schéma d'origine est facilement traitée (évolution du schéma).

Format de fichier parquet

Parquet est un format de fichier open source pour Hadoop qui stocke structures de données imbriquées au format de colonnes plates.

Comparé à l’approche traditionnelle en rangées, Parquet est plus efficace en termes de stockage et de performances.

Ceci est particulièrement utile pour les requêtes qui lisent des colonnes spécifiques à partir d’une table large (plusieurs colonnes). Grâce au format de fichier, seules les colonnes nécessaires sont lues, les E/S sont donc réduites au minimum.

Une petite digression et explication: Pour mieux comprendre le format de fichier Parquet dans Hadoop, voyons ce qu'est un format basé sur des colonnes - c'est-à-dire en colonnes. Ce format stocke ensemble des valeurs similaires pour chaque colonne.

Par exemple, l'enregistrement comprend les champs ID, Nom et Département. Dans ce cas, toutes les valeurs de la colonne ID seront stockées ensemble, tout comme les valeurs de la colonne Nom, et ainsi de suite. Le tableau ressemblera à ceci :

ID
Nom
Département

1
emp1
d1

2
emp2
d2

3
emp3
d3

Au format chaîne, les données seront enregistrées comme suit :

1
emp1
d1
2
emp2
d2
3
emp3
d3

Dans un format de fichier en colonnes, les mêmes données seront enregistrées comme ceci :

1
2
3
emp1
emp2
emp3
d1
d2
d3

Le format en colonnes est plus efficace lorsque vous devez interroger plusieurs colonnes d'une table. Il lira uniquement les colonnes requises car elles sont adjacentes. De cette manière, les opérations d'E/S sont réduites au minimum.

Par exemple, vous n'avez besoin que de la colonne NOM. DANS format de chaîne Chaque enregistrement de l'ensemble de données doit être chargé, analysé par champ, puis extrait les données NAME. Le format de colonne vous permet d'accéder directement à la colonne Nom car toutes les valeurs de cette colonne sont stockées ensemble. Vous n'êtes pas obligé de numériser l'intégralité de l'enregistrement.

Ainsi, le format en colonnes améliore les performances des requêtes car il nécessite moins de temps de recherche pour accéder aux colonnes requises et réduit le nombre d'opérations d'E/S car seules les colonnes souhaitées sont lues.

Une des caractéristiques uniques Parquet est-ce que dans ce format il peut stocker des données avec des structures imbriquées. Cela signifie que dans un fichier Parquet, même les champs imbriqués peuvent être lus individuellement sans avoir à lire tous les champs de la structure imbriquée. Parquet utilise un algorithme de déchiquetage et d'assemblage pour stocker les structures imbriquées.

Les formats de fichiers dans le big data : un petit programme pédagogique
Pour comprendre le format de fichier Parquet dans Hadoop, vous devez connaître les termes suivants :

  1. Groupe de chaînes (groupe de lignes) : division horizontale logique des données en lignes. Un groupe de lignes est constitué d'un fragment de chaque colonne de l'ensemble de données.
  2. Fragment de colonne (morceau de colonne) : fragment d'une colonne spécifique. Ces fragments de colonnes se trouvent dans un groupe spécifique de lignes et sont garantis contigus dans le fichier.
  3. page (page) : Les fragments de colonnes sont divisés en pages écrites les unes après les autres. Les pages ont un titre commun, vous pouvez donc ignorer les pages inutiles lors de la lecture.

Les formats de fichiers dans le big data : un petit programme pédagogique
Ici le titre contient juste le chiffre magique PAR1 (4 octets) qui identifie le fichier comme un fichier Parquet.

Le pied de page dit ce qui suit :

  1. Métadonnées de fichier contenant les coordonnées de départ des métadonnées de chaque colonne. Lors de la lecture, vous devez d'abord lire les métadonnées du fichier pour trouver tous les fragments de colonnes qui vous intéressent. Les parties de colonnes doivent ensuite être lues séquentiellement. Les autres métadonnées incluent la version du format, le schéma et toute paire clé-valeur supplémentaire.
  2. Longueur des métadonnées (4 octets).
  3. nombre magique PAR1 (4 octets).

Format de fichier ORC

Format de fichier ligne-colonne optimisé (Colonne de lignes optimisée, ORC) offre un moyen très efficace de stocker des données et a été conçu pour surmonter les limitations des autres formats. Stocke les données sous une forme parfaitement compacte, vous permettant d'ignorer les détails inutiles - sans nécessiter la construction d'index volumineux, complexes ou gérés manuellement.

Avantages du format ORC :

  1. Un fichier est la sortie de chaque tâche, ce qui réduit la charge sur le NameNode (nœud de nom).
  2. Prise en charge des types de données Hive, notamment DateTime, décimaux et complexes (struct, list, map et union).
  3. Lecture simultanée d'un même fichier par différents processus RecordReader.
  4. Possibilité de diviser des fichiers sans rechercher de marqueurs.
  5. Estimation de l'allocation maximale de mémoire tas possible pour les processus de lecture/écriture en fonction des informations contenues dans le pied de page du fichier.
  6. Les métadonnées sont stockées au format de sérialisation binaire Protocol Buffers, ce qui permet d'ajouter et de supprimer des champs.

Les formats de fichiers dans le big data : un petit programme pédagogique
ORC stocke des collections de chaînes dans un seul fichier et, au sein de la collection, les données de chaîne sont stockées sous forme de colonnes.

Un fichier ORC stocke des groupes de lignes appelés bandes et des informations complémentaires dans le pied de page du fichier. Le Postscript à la fin du fichier contient les paramètres de compression et la taille du pied de page compressé.

La taille de bande par défaut est de 250 Mo. En raison de ces grandes bandes, la lecture à partir de HDFS est effectuée plus efficacement : dans de grands blocs contigus.

Le pied de page du fichier enregistre la liste des voies du fichier, le nombre de lignes par voie et le type de données de chaque colonne. La valeur résultante de count, min, max et sum pour chaque colonne y est également écrite.

Le pied de page de la bande contient un répertoire d'emplacements de flux.

Les données de ligne sont utilisées lors de l'analyse des tables.

Les données d'index incluent les valeurs minimales et maximales pour chaque colonne et la position des lignes dans chaque colonne. Les index ORC sont utilisés uniquement pour sélectionner des bandes et des groupes de lignes, et non pour répondre aux requêtes.

Comparaison de différents formats de fichiers

Avro comparé au Parquet

  1. Avro est un format de stockage en lignes, tandis que Parquet stocke les données en colonnes.
  2. Parquet est mieux adapté aux requêtes analytiques, ce qui signifie que les opérations de lecture et d'interrogation de données sont beaucoup plus efficaces que les écritures.
  3. Les opérations d'écriture dans Avro sont effectuées plus efficacement que dans Parquet.
  4. Avro traite l'évolution du circuit avec plus de maturité. Parquet ne prend en charge que l'ajout de schémas, tandis qu'Avro prend en charge l'évolution multifonctionnelle, c'est-à-dire l'ajout ou la modification de colonnes.
  5. Parquet est idéal pour interroger un sous-ensemble de colonnes dans une table à plusieurs colonnes. Avro convient aux opérations ETL où nous interrogeons toutes les colonnes.

ORC contre Parquet

  1. Parquet stocke mieux les données imbriquées.
  2. ORC est mieux adapté au refoulement des prédicats.
  3. ORC prend en charge les propriétés ACID.
  4. ORC compresse mieux les données.

Quoi d'autre à lire sur le sujet:

  1. Analyse Big Data dans le cloud : comment une entreprise peut s'orienter vers les données.
  2. Un humble guide des schémas de base de données.
  3. Notre chaîne de télégrammes sur la transformation numérique.

Source: habr.com

Ajouter un commentaire