18

Apache AVROプロジェクトによると、「Avroはシリアル化システムです」。データシリアル化システムとは、avroが製品またはAPIであることを意味しますか?

また、データシリアル化システムとは何かについてはよくわかりません。今のところ、私の理解では、これはデータオブジェクトがネットワークを介して渡される方法を定義するプロトコルです。分散コンピューティングのバックグラウンドが限られている人が理解しやすいように、直感的な方法で説明できる人はいますか?

前もって感謝します!

4

2 に答える 2

30

そのため、Doug Cutting が Hadoop を作成していたとき、Java Object Serialization (Java Serialization) を使用して Java オブジェクトをシリアライズする標準的な Java メソッドは、Hadoop の要件を満たしていないと判断しました。つまり、これらの要件は次のとおりです。

  1. データをコンパクトなバイナリ形式にシリアル化します。
  2. パフォーマンスとデータ転送速度の両方で高速であること。
  3. 相互運用性があるため、他の言語をより簡単に Hadoop にプラグインできます。

彼は Java シリアライゼーションについて次のように説明しています。

それは大きくて毛むくじゃらに見えました。

Java シリアライゼーションを使用する代わりに、独自のシリアライゼーション フレームワークを作成しました。Java シリアル化で認識されている主な問題は、ストリームにシリアル化される各オブジェクトのクラス名が書き込まれ、そのクラスの後続の各インスタンスには、クラス名ではなく、最初のオブジェクトへの 5 バイトの参照が含まれていることです。

ストリームの有効な帯域幅が減少するだけでなく、ランダム アクセスの問題や、シリアル化されたストリーム内のレコードの並べ替えの問題が発生します。したがって、Hadoop シリアライゼーションは、クラス名または必要な参照を書き込まず、クライアントが期待される型を知っていると仮定します。

また、Java シリアライゼーションは、デシリアライズされるオブジェクトごとに新しいオブジェクトを作成します。Hadoop シリアライゼーションを実装する Hadoop Writable は再利用できます。したがって、数十億のレコードを強調してシリアライズおよびデシリアライズする MapReduce のパフォーマンスの向上に役立ちます。

Avro は、別の方法でシリアル化にアプローチするという点で Hadoop に適合します。クライアントとサーバーは、データストリームを記述するスキームを交換します。これにより、高速でコンパクトになり、重要なことに、複数の言語を簡単に混在させることができます。

そのため、Avro はシリアル化形式、クライアントとサーバーがこれらのシリアル ストリームを通信するためのプロトコル、およびファイル内のデータをコンパクトに永続化する方法を定義しています。

これが役立つことを願っています。Avro が Hadoop のサブプロジェクトである理由と、それが何を支援することを意味するのかを理解するには、Hadoop の歴史を少し知ることが役立つと思いました。

于 2010-03-22T04:20:30.850 に答える
3

階層やデータ構造の実装の詳細などの情報を限られたファイルに保存し、その情報をネットワーク経由で渡す必要がある場合は、データのシリアル化を使用します。xml または json 形式の理解に近づいています。利点は、シリアル化されたものは何でもクラス、オブジェクト、データ構造を再生成するために、任意のシリアル化形式に変換された情報を逆シリアル化できることです。

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

シリアル化形式のリストへのリンクは次のとおりですさらに情報が必要な場合はコメントしてください!:)

于 2014-11-26T11:01:35.133 に答える