Avroは、Apache Hadoop用のデータ・シリアライゼーションとデータ交換のサービスを提供するオープンソース・プロジェクトです。 これらのサービスは、一緒に使用することも、個別に使用することもできます。 Avroでは、あらゆる言語で書かれたプログラム間でビッグデータを容易に交換できます。 シリアライゼーション・サービスを使用すると、プログラムではデータをファイルやメッセージに効率的にシリアライズできます。 データ・ストレージはコンパクトで効率的です。 Avroでは、データ定義とデータの両方を1つのメッセージまたはファイルにまとめて保存します。
Avroではデータ定義をJSON形式で保存しているため、読み取りや解釈が簡単です。データ自体はバイナリー形式で保存されるため、コンパクトで効率的です。 Avroファイルにはマーカーが含まれており、大容量のデータセットをApache MapReduceでの処理に適したサブセットに分割する際に使用できます。 データ交換サービスによっては、コード・ジェネレータを使用して、データ定義を解釈し、データにアクセスするためのコードを生成する場合があります。 Avroではこの手順が必要ないため、スクリプト言語に最適です。
Avroの主要な機能は、時間の経過とともに変化する(多くの場合スキーマ進化と呼ばれる)データ・スキーマの堅牢なサポートです。 Avroは、フィールドの欠落、フィールドの追加、フィールドの変更といったスキーマの変更を処理します。その結果、古いプログラムが新しいデータを読み取り、新しいプログラムが古いデータを読み取ることができます。 AvroにはJava、Python、Ruby、C、C++などのAPIが含まれています。 Avroを使用して保存されたデータは、異なる言語で書かれたプログラムからの受け渡しが可能で、Cなどのコンパイル済み言語から、Apache Pigなどのスクリプト言語へも受け渡すこともできます。