2010-03-21 6 views
16

según el proyecto AVRO de Apache, "Avro es un sistema de serialización". Al decir sistema de serialización de datos, ¿significa que avro es un producto o api?¿Qué es un sistema de serialización de datos?

Además, no estoy seguro de lo que es un sistema de serialización de datos? por ahora, tengo entendido que es un protocolo que define cómo se pasa el objeto de datos por la red. ¿Puede alguien ayudar a explicarlo de una manera intuitiva que sea más fácil de entender para las personas con conocimientos limitados de informática distribuida?

¡Gracias de antemano!

Respuesta

26

Así que cuando Doug Cutting estaba escribiendo Hadoop, decidió que el método estándar de Java de serializar el objeto Java utilizando Serialización de objetos Java (Serialización Java) no cumplía con sus requisitos para Hadoop. Es decir, estos requisitos eran:

  1. serializar los datos en un formato binariocompacto.
  2. Be rápido, tanto en rendimiento como en la rapidez con la que se transfirieron los datos.
  3. Interoperable para que otros idiomas se conecten a Hadoop más fácilmente.

Mientras describía serialización Java:

Parecía grande y peludo y pensé que necesitaba algo ligero y robusto

En lugar de utilizar Java La serialización escribieron su propio marco de serialización. Los principales problemas percibidos con la Serialización de Java es que escribe el nombre de clase de cada objeto que se serializa a la secuencia, con cada instancia subsiguiente de esa clase que contiene una referencia de 5 bytes a la primera, en lugar del nombre de clase.

Además de reducir el ancho de banda efectivo de la transmisión, esto ocasiona problemas con el acceso aleatorio y la clasificación de registros en una secuencia serializada. Por lo tanto, la serialización de Hadoop no escribe el nombre de clase o las referencias requeridas, y asume que el cliente conoce el tipo esperado.

Java Serialization también crea un nuevo objeto para cada uno que está deserializado. Hadoop Writables, que implementa Hadoop Serialization, se puede reutilizar. Por lo tanto, ayuda a mejorar el rendimiento de MapReduce, que acentúa serialmente y deserializa miles de millones de registros.

Avro cabe en Hadoop porque aborda la serialización de una manera diferente. El cliente y el servidor intercambian un esquema que describe el flujo de datos. Esto ayuda a que sea rápido, compacto y, lo que es más importante, facilita la combinación de languanges.

Así que Avro define un formato de serialización, un protocolo para clientes y servidores para comunicar estos flujos en serie y una manera de persistir de forma compacta en los datos de los archivos.

Espero que esto ayude. Pensé que un poco de historia de Hadoop ayudaría a entender por qué Avro es un subproyecto de Hadoop y para qué sirve.

+2

muchas gracias! eso es muy útil, creo que necesito un poco de conocimiento de hadoop para entender sus subproyectos :) – Yang

0

Si tiene que almacenar en un archivo limitado la información como la jerarquía o la implementación de la estructura de datos detalla y pasa esa información a través de una red, usted usa la serialización de datos. Está cerca de comprender el formato xml o json.El beneficio es que la información que se traduce en cualquier formato de serialización se puede deserializar para regenerar las clases, los objetos y las estructuras de datos, independientemente de lo que se haya serializado.

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

Here es el enlace a la lista de formatos de serialización. ¡Comenta si quieres más información! :)

Cuestiones relacionadas