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:
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.
muchas gracias! eso es muy útil, creo que necesito un poco de conocimiento de hadoop para entender sus subproyectos :) – Yang