`
gaojingsong
  • 浏览: 1182965 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【序列化工具Avro介绍】

阅读更多

1、Avro介绍

Avro是一个数据序列化的系统。Avro是Hadoop中的一个子项目,也是Apache中一个独立的项目,Avro是一个基于二进制数据传输高性能的中间件。在Hadoop的其他项目中例如HBase(Ref)和Hive(Ref)的Client端与服务端的数据传输也采用了这个工具。Avro是一个数据序列化的系统。Avro 可以将数据结构或对象转化成便于存储或传输的格式。Avro设计之初就用来支持数据密集型应用,适合于远程或本地大规模数据的存储和交换。




 
 

 

2、Avro特性

1 丰富的数据结构类型

2 快速可压缩的二进制数据形式

3 存储持久数据的文件容器

4 远程过程调用RPC

5 简单的动态语言结合功能,Avro和动态语言结合后,读写数据文件和使用RPC协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。

 

 

avro支持跨编程语言实现(C, C++, C#,Java, Python, Ruby, PHP),类似于Thrift,但是avro的显著特征是:avro依赖于模式,动态加载相关数据的模式,Avro数据的读写操作很频繁,而这些操作使用的都是模式,这样就减少写入每个数据文件的开销,使得序列化快速而又轻巧。这种数据及其模式的自我描述方便了动态脚本语言的使用。当Avro数据存储到文件中时,它的模式也随之存储,这样任何程序都可以对文件进行处理。如果读取数据时使用的模式与写入数据时使用的模式不同,也很容易解决,因为读取和写入的模式都是已知的。

 

Avro指定两种数据序列化编码方式:binary encoding 和Json encoding。使用二进制编码会高效序列化,并且序列化后得到的结果会比较小;而JSON一般用于调试系统或是基于WEB的应用。

 

 

 

Avro依赖于模式(Schema)。Avro数据的读写操作是很频繁的,而这些操作都需要使用模式,这样就减少写入每个数据资料的开销,使得序列化快速而又轻巧。这种数据及其模式的自我描述方便于动态脚本语言的使用。

当Avro数据存储到文件中时,它的模式也随之存储,这样任何程序都可以对文件进行处理。如果需要以不同的模式读取数据,这也很容易解决,因为两个模式都是已知的。

当在RPC中使用Avro时,服务器和客户端可以在握手连接时交换模式。服务器和客户端有着彼此全部的模式,因此相同命名字段、缺失字段和多余字段等信息之间通信中需要解决的一致性问题就可以容易解决

还有,Avro模式是用JSON(一种轻量级的数据交换模式)定义的,这样对于已经拥有JSON库的语言可以容易实现。

 

 

Avro提供着与诸如Thrift和Protocol Buffers等系统相似的功能,但是在一些基础方面还是有区别的,主要是:

1 动态类型:Avro并不需要生成代码,模式和数据存放在一起,而模式使得整个数据的处理过程并不生成代码、静态数据类型等等。这方便了数据处理系统和语言的构造。

2 未标记的数据:由于读取数据的时候模式是已知的,那么需要和数据一起编码的类型信息就很少了,这样序列化的规模也就小了。

3 不需要用户指定字段号:即使模式改变,处理数据时新旧模式都是已知的,所以通过使用字段名称可以解决差异问题。

  • 大小: 10 KB
0
0
分享到:
评论

相关推荐

    Avro数据序列化系统(1)

    总的来说,Avro是Hadoop生态中的重要工具,通过其高效的数据序列化和反序列化能力,简化了大数据处理的复杂性,提高了数据交换的效率。在分布式计算环境中,无论是存储、传输还是处理大量数据,Avro都是一个值得信赖...

    avro序列化

    Avro是Apache Hadoop项目中的一个关键组件,它提供了一种高效、跨语言的数据序列化框架。相比Google的Protocol Buffers,Avro在Hadoop生态中有其独特优势和特点。 首先,让我们深入了解什么是Avro。Avro是由Hadoop...

    Java反序列化工具.zip

    描述中的"weblogic反序列化工具"和"jboss反序列化工具"提到了两个特定的应用服务器——WebLogic和JBoss。WebLogic是Oracle公司的一个企业级应用服务器,而JBoss则是Red Hat公司的开源Java EE应用服务器。这两个...

    几种序列化的实现方法 java自带, Writable, Avro

    下面将详细介绍这三种序列化方式。 1. **Java自带的序列化** Java内置的序列化机制是通过实现`java.io.Serializable`接口来标记一个类可以被序列化。当对象实例需要序列化时,Java会调用`writeObject()`和`...

    protobuf/thrift/avro-序列化性能测试工程

    protobuf(Protocol Buffers)、thrift和avro是三种广泛使用的序列化框架,它们在分布式系统、网络通信以及数据存储中扮演着重要角色。这个名为"protobuf/thrift/avro-序列化性能测试工程"的项目专注于对比这三种...

    avro-tool工具jar包

    Avro是Apache软件基金会的一个开源项目,它提供了一种数据序列化系统,广泛应用于大数据处理和分布式计算领域。Avro工具jar包是Avro的一部分,主要用于处理Avro格式的数据,包括编译Avro模式,转换数据,以及合并或...

    java反序列化利用工具

    `util.jar`可能包含一些实用工具类,可能用于处理序列化和反序列化操作。在安全背景下,这个库可能被检查以确定是否存在任何脆弱的反序列化代码。 利用Java反序列化漏洞通常涉及以下步骤: 1. 分析目标应用程序的...

    java serializable 序列化与反序列化

    Java的序列化与反序列化是Java开发中的一项重要...在实际应用中,要根据具体需求来选择合适的序列化库,如Google的Protocol Buffers、Facebook的Thrift或Apache Avro等,它们提供了更高效、更灵活的序列化解决方案。

    对象的序列化和反序列化

    除此之外,还有其他的序列化库和框架,比如Google的Protocol Buffers、Apache Avro和JSON序列化库Jackson等。这些库提供了更高效、更灵活的序列化方案,支持不同的数据格式,且通常具有更好的性能和可扩展性。 总之...

    Hadoop序列化机制

    “工具”则意味着除了理论知识,还有实际可用的库和工具可以帮助我们在项目中实施这些序列化技术。 综上所述,Hadoop序列化机制是大数据处理中的核心技术,涵盖了多种不同的实现方式,每种都有其特点和适用场景。...

    dubbo-serialization-avro:适用于avro的dubbo序列化扩展

    双重序列化-avro 适用于dubbo的avro序列化工具。1.从src编译我们使用maven来构建和管理依赖项。 下载src git clone https://github.com/dubbo/dubbo-serialization-avro.git 从src构建,然后安装到本地maven存储库。...

    javaRMI反序列化漏洞验证工具

    - 使用安全的序列化库,如使用Google的Protocol Buffers或Apache Avro。 - 避免在RMI中使用可信赖的、未经过严格控制的远程对象。 - 定期更新和打补丁,确保系统软件版本是最新的,以修复已知的安全漏洞。 总的来说...

    Java读写avro所需jar

    1. **Avro-1.7.7.jar**:这是Avro的核心库,包含了一系列的API和实现,使得Java开发者能够创建、序列化和反序列化Avro数据。这个库提供了以下主要功能: - **数据模型**:Avro定义了一种强类型的数据模型,包括基本...

    apache avro 简介

    Apache Avro是Hadoop生态系统中的一个关键组件,它是一个数据序列化系统,旨在提供高效的、易于使用的数据交换格式。Avro的数据模型与JSON类似,但更加强大且适合大规模数据处理。它的设计目标是简化分布式应用程序...

    Flink 数据类型与序列化.pdf

    在源码层面,Flink的序列化框架使用到了多种策略,如Java序列化、Kryo序列化和Avro序列化等,以达到优化性能和减小数据体积的目的。不同的序列化策略在不同的使用场景下有不同的表现,因此,选择合适的序列化方式...

    gogen-avro:生成Go代码以序列化和反序列化Avro模式

    戈根阿夫罗 根据您的Avro架构生成类型安全的Go代码,包括支持Avro架构演进规则的序列化器和反序列化器。 还支持反序列化通用Avro数据(测试版)。目录使用gogen-avro的公司/项目报告问题备择方案 安装gogen-avro有两...

    消息序列化/反序列化的基准和用法

    消息序列化与反序列化是IT领域中一个关键的概念,...正确选择和使用序列化工具不仅可以提升系统的性能,还能增强系统的互操作性和可维护性。对这个主题深入理解并持续关注新技术的发展,对于IT专业人士来说非常重要。

    Java序列化的机制和原理

    总之,Java序列化是一个强大的工具,它使得对象能够在不同的环境之间交换和恢复,但同时也需要注意安全问题,因为序列化可能暴露敏感信息。为了提高效率和安全性,有时可以考虑使用自定义的序列化方法或者其他的序列...

    avro-doc-1.7.7

    Avro与Protobuf、Thrift等序列化工具相比,更强调Schema,这使得其在数据交换和数据持久化方面有优势。而与JSON相比,Avro的数据文件通常更小,读写速度更快。 7. **集成与使用** Avro可以方便地集成到各种Hadoop...

Global site tag (gtag.js) - Google Analytics