Question

selon le projet Apache AVRO, "Avro est un système de sérialisation". En disant système de sérialisation de données, cela signifie que Avro est un produit ou api?

aussi, je suis quitte pas sûr de ce qu'est un système de sérialisation de données? pour l'instant, je crois comprendre qu'il est un protocole qui définit l'objet de données sont transmises sur le réseau. Quelqu'un peut-il aider à expliquer de façon intuitive qu'il est plus facile pour les personnes issues de l'informatique distribuée limitée à comprendre?

Merci d'avance!

Était-ce utile?

La solution

Alors, quand Hadoop a été écrit par Doug Cutting, il a décidé que la méthode standard Java de sérialisation objet Java en utilisant Java Object sérialisation (Java sérialisation) ne répondait pas à ses exigences pour Hadoop. A savoir, ces exigences sont les suivantes:

  1. sérialiser les données dans un compact format binaire.
  2. être rapide , à la fois la performance et la rapidité avec laquelle il a permis à des données transférées.
  3. Interopérable pour que les autres langues se branchent dans Hadoop plus facilement.

Comme il décrit sérialisation Java:

  

Il avait l'air grand et poilu et je pensais que nous avions besoin quelque chose simple et léger

Au lieu d'utiliser Java sérialisation ils ont écrit leur propre cadre de sérialisation. Les principaux problèmes perçus avec sérialisation Java est qu'il écrit le nom de classe de chaque objet sérialisé au courant, chaque instance ultérieure de cette catégorie contenant une référence de 5 octets au premier, au lieu du nom de classe.

En plus de réduire la bande passante effective du flux provoque des problèmes avec ce accès aléatoire ainsi que le tri des enregistrements dans un flux sérialisé. Ainsi sérialisation Hadoop ne pas écrire le nom de classe ou les références nécessaires, et fait l'hypothèse que le client connaît le type attendu.

sérialisation Java crée également un nouvel objet pour chacun qui est désérialisée. Hadoop Writables, qui mettent en œuvre Hadoop sérialisation, peuvent être réutilisés. Ainsi, en aidant à améliorer la performance de MapReduce qui sérialise accentually et désérialise milliards d'enregistrements.

Avro s'inscrit dans Hadoop en ce qu'elle se rapproche sérialisation d'une manière différente. L'échange client et le serveur un système qui décrit le flux de données. Cela contribue à rendre rapide, compact et permet surtout de mieux mélanger languanges ensemble.

Avro définit un format de sérialisation, un protocole pour les clients et les serveurs pour communiquer ces flux série et un moyen de maintenir les données dans des fichiers de manière compacte.

J'espère que cela aide. Je pensais un peu d'histoire Hadoop aiderait à comprendre pourquoi Avro est un sous-projet de Hadoop et ce que sa destinée à aider.

Autres conseils

Si vous devez enregistrer dans un fichier limité les informations comme la hiérarchie ou les détails de mise en œuvre de la structure des données et de transmettre ces informations sur un réseau, vous utilisez la sérialisation de données. Il est proche de xml compréhension ou format JSON. L'avantage est que l'information qui est traduit en tout format de sérialisation peut être désérialisée pour régénérer les classes, objets, structures de données qui a été publié en feuilleton tout.

actual implementation-->serialization-->.xml or .json or .avro --->deserialization--->imlementation in original form

le lien vers la liste des formats de sérialisation. Commentaire si vous voulez plus d'informations! :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top