Hadoop record I/O 包含class文件以及record描述语言解释器用于简化records的序列化和反序列化。

介绍

任何显著复杂性的软件系统都需要与外界进行数据交换的机制。数据交互通常涉及到输入输出数据逻辑单元的封包和解包(如文件、网络连接、内存缓冲区等等。)。应用程序通常嵌套了操作代码用于序列化和反序列化数据类型。序列化的工作有几个特性,它可以使得代码自动化生成。给你一个特别的输出编码格式(比如二进制、XML等等),基本数据类型以及由基本数据类型构成的组合的序列化将是一个机械化的工作。人工编写序列化代码容易造成bugs特别是当records有很多字段或者一个record在不同版本之间定义的不同。最后它在通过不同编程语言编写的应用程序之间进行数据的交互是很有用的。通过以一种语言无关的方式来描述由应用程序操作的数据records,并使用描述来派生出不同目标语言的实现,会变得更加容易。本文档描述Hadoop Record I/O,一种机制目的在于:

1)提供简单的序列化数据类型的规范

2)提供上述类型的封装和解包的不同目标语言的代码生成

3)提供特定于目标预研的支持,使应用程序编程人员能够将生成的代码集成到应用程序中。

Hadoop Record I/O的目标有点类型XDR, ASN.1, PADS and ICE的机制。虽然这些系统都包含一个大多数record类型的规范DDL文件,他们在其他方面还是有很多不同的。Hadoop Record I/O聚焦于数据的序列化和多语言的支持。我们可以基于翻译器的方式进行序列化。Hadoop的用户必须使用一个简单的数据描述语言来描述他们的数据。Hadoop DDL 翻译器rcc生成代码,用户可以通过调用简单的读写数据流抽象来进行数据的读写。接下来我们我们会罗列Hadoop Record I/O的一些目标和非目标。

目标:

1)支持常用的基本类型。Hadoop应该包含我们希望支持的常用内置类型。

2)支持复合类型(包括递归复合)。Hadoop应该支持复合类型如structs或者vectors。

3)不同目标语言的代码生成。Hadoop应该能支持生成不同目标语言的序列化代码,同时能很好地进行扩展。初步目标是C++和JAVA。

4)目标语言的支持。Hadoop应该内置支持目标的头文件、库或者包,以便能很好地内置到应用程序当中。

5)支持多种不同输出编码格式。可以是封装好的二进制、逗号分隔的文本或者是XML等等。

6)支持向后或向前兼容的记录类型。

非目标:

1)序列化任意的C++文件。

2)序列化复杂的数据结构如trees、linked list等等。

3)内建的索引、压缩或校验和。

4)从XML生成的动态构造实体。

后续的文档主要在细节上描述Hadoop record I/O 的特性。第2部分描述系统支持的数据类型,第3部分描述简单记录例子的DDL语法,第4部分描述使用rcc代码生成的过程,第5部分描述目标语言的映射和对Hadoop类型的支持,我们已经有一个C++映射的相对完整的描述,在即将到来的文档更新中将会包含Java以及其他语言。最后一部分描述输出编码的支持。

ZooKeeper源码分析-Jute-第一部分的更多相关文章

  1. zookeeper源码分析之五服务端(集群leader)处理请求流程

    leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...

  2. zookeeper源码分析之四服务端(单机)处理请求流程

    上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...

  3. zookeeper源码分析之三客户端发送请求流程

    znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...

  4. Zookeeper 源码分析-启动

    Zookeeper 源码分析-启动 博客分类: Zookeeper   本文主要介绍了zookeeper启动的过程 运行zkServer.sh start命令可以启动zookeeper.入口的main ...

  5. storm操作zookeeper源码分析-cluster.clj

    storm操作zookeeper的主要函数都定义在命名空间backtype.storm.cluster中(即cluster.clj文件中).backtype.storm.cluster定义了两个重要p ...

  6. zookeeper源码分析之leader选举

    zookeeper提供顺序一致性.原子性.统一视图.可靠性保证服务zookeeper使用的是zab(atomic broadcast protocol)协议而非paxos协议zookeeper能处理并 ...

  7. zookeeper源码分析三LEADER与FOLLOWER同步数据流程

    根据二)中的分析,如果一台zookeeper服务器成为集群中的leader,那么一定是当前所有服务器中保存数据最多的服务器,所以在这台服务器成为leader之后,首先要做的事情就是与集群中的其它服务器 ...

  8. ZooKeeper源码分析:Quorum请求的整个流程(转)

    Quorum请求是转发给Leader处理,并且需要得一个Follower Quorum确认的请求.这些请求包括: 1)znode的写操作(OpCode.create,OpCode.delete,OpC ...

  9. zookeeper源码分析之二客户端启动

    ZooKeeper Client Library提供了丰富直观的API供用户程序使用,下面是一些常用的API: create(path, data, flags): 创建一个ZNode, path是其 ...

  10. zookeeper源码分析二FASTLEADER选举算法

    如何在zookeeper集群中选举出一个leader,zookeeper使用了三种算法,具体使用哪种算法,在配置文件中是可以配置的,对应的配置项是"electionAlg",其中1 ...

随机推荐

  1. python基本数据类型——set

    一.集合的定义 set集合,是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数 ...

  2. 把上传Github的代码添加Cocoapods支持

    开始 这里我将从最初的开始进行介绍,包括Github上创建项目已经上传项目,到最后的支持Cocoapods. 步骤如下: 代码上传Github 创建podspec文件,并验证是否通过 在Github上 ...

  3. DirectFB 之 简介

    1. DirectFB概述        首先 DirectFB 类似于桌面中的 XFree86 .桌面中的 XFree86 不需要 Frame Buffer 设备,而 DirectFB 需要.   ...

  4. SpringMVC是什么?

    一,首先是一个MVC框架. 在web模型中,MVC是一种很流行的框架,通过把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,是为了简化开发,减少出错.还是为 ...

  5. 详解Session分布式共享(.NET CORE版)

    一.前言&回顾 在上篇文章Session分布式共享 = Session + Redis + Nginx中,好多同学留言问了我好多问题,其中印象深刻的有:nginx挂了怎么办?采用Redis的S ...

  6. 蓝桥杯-分小组-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  7. seajs的那些坑

    seajs是what? 先看段代码: var loder = {}; var define = loder.define = function(id,deps,factory){ loader[id] ...

  8. TypeScript入门-高级类型

    高级类型 交叉类型 交叉类型,就是将多个类型合并为一个新的类型,这个新的类型具有这多个类型的成员,含有这几个类型的所有特性,是他们的综合体,像是集合的并集 例子: function extend< ...

  9. openlayers应用(二):加载百度离线瓦片

    上一篇文章介绍了使用openlayers3加载百度在线地图,对某些项目或应用场景比如不允许上外网的单位,某些项目只针对一定区域地图加载应用,比如一个县的地图,可以采用下载百度瓦片地图,在服务器或者本机 ...

  10. Linux防火墙的关闭和开启

    1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开启: service iptables sta ...