2010-03-21 5 views
16

Laut dem Apache AVRO-Projekt ist "Avro ein Serialisierungssystem". Sagt das Datenserialisierungssystem, dass avro ein Produkt oder eine API ist?Was ist ein Datenserialisierungssystem?

auch bin ich nicht sicher, was ein Datenserialisierungssystem ist? Im Moment verstehe ich, dass es ein Protokoll ist, das definiert, wie Datenobjekte über das Netzwerk übertragen werden. Kann mir jemand auf eine intuitive Art und Weise erklären, dass es für Menschen mit begrenztem Computerhintergrund leichter ist zu verstehen?

Vielen Dank im Voraus!

Antwort

26

Als Hadoop von Doug Cutting geschrieben wurde, entschied er, dass die Java-Standardmethode zum Serialisieren von Java-Objekten mit Java Object Serialization (Java Serialization) nicht seinen Anforderungen für Hadoop entsprach. Und zwar waren diese Anforderungen:

  1. Serialize die Daten in einem kompakten Binärformat.
  2. Be schnell, sowohl in der Leistung und wie schnell es erlaubt, Daten übertragen werden.
  3. Interoperabel, damit andere Sprachen leichter in Hadoop eingesteckt werden können.

Als er Java Serialisierung beschrieben:

Es sah groß und behaart und ich brauchten wir allerdings etwas schlank und

Anstelle der Verwendung von Java Serialisierung sie ihre eigene Serialisierung Rahmen geschrieben. Die Hauptprobleme bei der Java-Serialisierung bestanden darin, dass der Klassenname jedes Objekts, das serialisiert wird, in den Stream geschrieben wird, wobei jede nachfolgende Instanz dieser Klasse anstelle des Klassennamens eine 5-Byte-Referenz auf die erste enthält.

Neben der Reduzierung der effektiven Bandbreite des Streams führt dies zu Problemen beim wahlfreien Zugriff sowie beim Sortieren von Datensätzen in einem serialisierten Datenstrom. Daher schreibt die Hadoop-Serialisierung nicht den Klassennamen oder die erforderlichen Referenzen und nimmt an, dass der Client den erwarteten Typ kennt.

Java Serialisierung erstellt auch ein neues Objekt für jedes deserialized. Hadoop-Writables, die die Hadoop-Serialisierung implementieren, können wiederverwendet werden. Dies trägt zur Verbesserung der Leistung von MapReduce bei, die Milliarden von Datensätzen serialisiert und deserialisiert.

Avro passt in Hadoop, da es die Serialisierung auf andere Weise annimmt. Der Client und der Server tauschen ein Schema aus, das den Datenstrom beschreibt. Dies macht es schnell, kompakt und vor allem macht es einfacher, Sprachen miteinander zu mischen.

So definiert Avro ein Serialisierungsformat, ein Protokoll für Clients und Server, um diese seriellen Streams zu kommunizieren und eine Möglichkeit, Daten in Dateien kompakt zu speichern.

Ich hoffe, das hilft. Ich dachte, ein bisschen Hadoop-Geschichte würde helfen zu verstehen, warum Avro ein Teilprojekt von Hadoop ist und was es helfen soll.

+2

vielen Dank! das ist sehr hilfreich, ich denke, ich brauche ein wenig Hintergrund von Hadoop, um seine Teilprojekte zu verstehen :) – Yang

0

Wenn Sie Informationen wie die Hierarchie- oder Datenstrukturimplementierungsdetails in einer begrenzten Datei speichern und diese Informationen über ein Netzwerk weitergeben müssen, verwenden Sie die Datenserialisierung. Es ist nahe zu verstehen, XML oder JSON-Format.Der Vorteil besteht darin, dass die Informationen, die in ein beliebiges Serialisierungsformat übersetzt werden, deserialisiert werden können, um die Klassen, Objekte und Datenstrukturen unabhängig davon, ob sie serialisiert wurden, neu zu generieren.

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

Here ist der Link zu der Liste der Serialisierung Formate. Kommentar, wenn Sie weitere Informationen wünschen! :)