Hadoop 生态系统 - 哥不是小萝莉 - 博客园
http://www.cnblogs.com/smartloli/p/5640587.html
Avro 是一个基于二进制数据传输高性能的中间件。在 Hadoop 的其它项目中,例如 HBase,Hive 的 Client 端与服务端的数据传输也采用了这个工具。Avro 是一个数据序列化的系统,它可以将数据结构或对象转化成便于存储或传输的格式。Avro 设计之初就用来支持数据密集型应用,适合于远程或本地大规模数据的存储和交换。拥有一下特点:
丰富的数据结构类型
快速可压缩的二进制数据形式,对数据二进制序列化后可以节约数据存储空间和网络传输带宽
存储持久数据的文件容器
可以实现远程过程调用 RPC
简单的动态语言结合功能
Avro简介 - 技术博客 - ITeye技术网站
http://elf8848.iteye.com/blog/2083166
Avro和动态语言结合后,读/写数据文件和使用RPC协议都不需要生成代码,而代码生成作为一种可选的优化只需要在静态类型语言中实现。
Avro依赖于模式(Schema)。通过模式定义各种数据结构,只有确定了模式才能对数据进行解释,所以在数据的序列化和反序列化之前,必须先确定模式的结构。正是模式的引入,使得数据具有了自描述的功能,同时能够实现【动态加载】,另外与其他的数据序列化系统如Thrift相比,数据之间不存在其他的任何标识,有利于提高数据处理的效率。
2、 序列化/反序列化
Avro指定两种数据序列化编码方式:binary encoding 和Json encoding。使用二进制编码会高效序列化,并且序列化后得到的结果会比较小;而JSON一般用于调试系统或是基于WEB的应用。
用Hadoop AVRO进行大量小文件的处理 - 坐禅小和尚的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/zuochanxiaoheshang/article/details/9123273
在Hive中使用Avro - 茄子_2008 - 博客园
http://www.cnblogs.com/xd502djj/p/4089644.html
大数据开放平台搭建,难点何在?
http://www.infoq.com/cn/articles/build-big-data-open-platform/
了解Avro可以看官网的Introduction。Avro经常会被跟Thrift和Protobuf这两个序列化系统做比较。因为Avro本身也是一个序列化系统。那么我们就要提出一个问题,在Thrift和Protobuf已经很成熟的这种基础上,为什么要选择Avro?在08年,10年左右,我关注这个项目,后来发现所有的代码的提交修改记录,全是Doug Cutting,里面有90%的工作都是Doug Cutting本人去做的。Doug Cutting早期是Lucene的项目的创始人,也是Hadoop的创始人,一手把Hadoop开源项目带起来,甚至都是他亲身去开发的。他花费那么多精力去搞Avro,必有其独到之处。
Avro开发中代码生成是可选的,这是一个跟其他系统,就是跟Thrift和Protobuf有很大区分的一个特性。另外Avro支持通用数据读取,不依赖于代码生成。【有了这两个特性,Avro就更能适应大数据变化的特性】。Doug Cutting当时是在Thrift和Protobuf很成熟的基础上开始着手建立Avro的,是非常有想法的。
几种序列化之间的比较Thrift&protocolbuffer&avro - 分布式架构、大数据、机器学习、搜索、推荐、广告 - 博客频道 - CSDN.NET
http://blog.csdn.net/yangbutao/article/details/8332505
RPC综述 - PB, Thrift, Avro - fxjwind - 博客园
http://www.cnblogs.com/fxjwind/archive/2013/05/16/3082219.html
当然当大数据时代来临的时候, 大家发现基于XML, 甚至Json的文本协议的方案的传输效率很成问题 所以Google和Facebook, 又开始研究基于二进制的RPC方案, 于是产生PB, Thrift, Avro, 其实本质和理论上也是来源于corba