ZooKeeper源码分析-Jute-第一部分

HadoopRecord I/O 是一种简化数据序列化和反序列化的机制,旨在为不同编程语言提供易于使用的序列化数据类型规范和支持。它支持基本和复合数据类型,能够生成多种目标语言的代码,如 C++ 和 Java,并且支持二进制、CSV 或 XML 等多种输出编码格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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以及其他语言。最后一部分描述输出编码的支持。

 

 

转载于:https://www.cnblogs.com/wangtale/p/7019816.html

mvn compile [INFO] Scanning for projects... [INFO] [INFO] ----------------< org.apache.zookeeper:zookeeper-jute >----------------- [INFO] Building Apache ZooKeeper - Jute 3.10.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- mavanagaiata:0.9.4:commit (find-current-git-revision) @ zookeeper-jute --- [INFO] [INFO] --- maven-antrun-plugin:1.8:run (set-hostname-property) @ zookeeper-jute --- [INFO] Executing tasks main: [INFO] Executed tasks [INFO] [INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (enforce-maven-version) @ zookeeper-jute --- [INFO] [INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (banned-commons-lang) @ zookeeper-jute --- [INFO] [INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (banned-commons-lang3) @ zookeeper-jute --- [INFO] [INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (banned-json-simple) @ zookeeper-jute --- [INFO] [INFO] --- javacc-maven-plugin:2.6:javacc (javacc) @ zookeeper-jute --- [INFO] Skipping - all parsers are up to date [INFO] [INFO] --- maven-compiler-plugin:3.8.1:compile (pre-compile-jute) @ zookeeper-jute --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 34 source files to /root/soft/zookeeper/zookeeper-jute/target/classes [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.949 s [INFO] Finished at: 2025-06-15T16:32:32Z [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (pre-compile-jute) on project zookeeper-jute: Fatal error compiling: error: release version 8 not supported -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
06-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值