Hadoop record I/O contient des fichiers de classe et des interpréteurs de langage de description d'enregistrement pour simplifier la sérialisation et la désérialisation des enregistrements.
Introduction
Tout système logiciel d'une complexité importante nécessite un mécanisme d'échange de données avec le monde extérieur. L'interaction des données implique généralement la mise en paquets et le décompression des unités logiques des données d'entrée et de sortie (telles que les fichiers, les connexions réseau, les tampons de mémoire, etc.). Les applications ont souvent des opcodes imbriqués pour sérialiser et désérialiser les types de données. La sérialisation possède plusieurs fonctionnalités qui permettent la génération automatisée de code. Étant donné un format de codage de sortie particulier (tel que binaire, XML, etc.), la sérialisation des types de données de base et des combinaisons de types de données de base sera une tâche mécanique. L'écriture manuelle du code de sérialisation est sujette à des bogues, en particulier lorsque les enregistrements comportent de nombreux champs ou qu'un enregistrement est défini différemment selon les versions. Enfin, il est utile pour l'échange de données entre des applications écrites dans différents langages de programmation. Cela devient plus facile en décrivant les enregistrements de données manipulés par l'application d'une manière indépendante du langage et en utilisant la description pour dériver des implémentations dans différents langages cibles. Ce document décrit Hadoop Record I/O, un mécanisme dont le but est de :
1) fournir une spécification simple des types de données sérialisées
2) fournir différentes cibles pour l'encapsulation et le déballage de ce qui précède types Génération de code pour le langage
3) Fournit une prise en charge spécifique à la cible pour permettre aux programmeurs d'applications d'intégrer le code généré dans les applications.
Hadoop Record I/O cible des mécanismes tels que XDR, ASN.1, PADS et ICE. Bien que ces systèmes contiennent un fichier DDL canonique pour la plupart des types d'enregistrement, ils diffèrent à bien d'autres égards. Hadoop Record I/O se concentre sur la sérialisation des données et la prise en charge multilingue. Nous pouvons faire une sérialisation basée sur le traducteur. Les utilisateurs Hadoop doivent utiliser un langage de description de données simple pour décrire leurs données. Le traducteur Hadoop DDL rcc génère du code et les utilisateurs peuvent lire et écrire des données en appelant une simple abstraction de flux de données de lecture et d'écriture. Ensuite, nous énumérerons quelques objectifs et non-objectifs de Hadoop Record I/O.
Objectifs :
1) Prise en charge des types de base couramment utilisés. Hadoop doit contenir des types intégrés courants que nous souhaitons prendre en charge.
2) Prend en charge les types composites (y compris la composition récursive). Hadoop doit prendre en charge les types composites tels que les structures ou les vecteurs.
3) Génération de code dans différentes langues cibles. Hadoop devrait être capable de prendre en charge la génération de code de sérialisation dans différentes langues cibles et de bien évoluer. Les cibles initiales sont C++ et JAVA.
4) Prise en charge de la langue cible. Hadoop doit avoir des fichiers d'en-tête, des bibliothèques ou des packages intégrés prenant en charge la cible afin qu'elle puisse être bien intégrée dans l'application.
5) Prend en charge une variété de formats d'encodage de sortie différents. Il peut s'agir de fichiers binaires encapsulés, de texte séparé par des virgules, de XML, etc.
6) Prise en charge des types d'enregistrement compatibles vers l'arrière ou vers l'avant.
Non cible :
1) Sérialiser des fichiers C++ arbitraires.
2) Sérialisez des structures de données complexes telles que des arbres, des listes chaînées, etc.
3) Indexation, compression ou somme de contrôle intégrées.
4) Entités construites dynamiquement générées à partir de XML.
Les documents suivants décrivent principalement en détail les caractéristiques des E/S d'enregistrement Hadoop. La partie 2 décrit les types de données pris en charge par le système, la partie 3 décrit la syntaxe DDL pour des exemples d'enregistrement simples, la partie 4 décrit le processus de génération de code à l'aide de rcc et la partie 5 décrit le mappage du langage cible et la prise en charge des types Hadoop, que nous avons déjà avoir Une description relativement complète du mappage C++, qui inclura Java et d'autres langages dans les prochaines mises à jour de la documentation. La dernière section décrit la prise en charge du codage de sortie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!