以上就是一个 protocol buffers 使用的完整流程了 。没什么难的,就是调用了一个第三方的序列化库,将对象序列化到文件,再反序列化读出来 。只不过需要先在 proto 文件中定义好数据结构,并生成对应的工具类 。
4、在 Yarn 中应用在 YARN 中,所有 RPC 函数的参数均采用 Protocol Buffers 定义的 。RPC 仍使用 MRv1 中的 RPC 。
二)Apache Avro1、简要介绍Apache Avro 是 Hadoop 下的一个子项目 。它本身既是一个序列化框架,同时也实现 了 RPC 的功能 。但由于 Yarn 项目初期,Avro 还不成熟,Avro 则作为日志序列化库使用,所有事件的序列化均采用 Avro 完成 。特点:
- 丰富的数据结构类型;
- 快速可压缩的二进制数据形式;
- 存储持久数据的文件容器;
- 提供远程过程调用 RPC;
- 简单的动态语言结合功能 。
- 支持动态模式 。Avro 不需要生成代码,这有利于搭建通用的数据处理系统,同时避免了代码入侵 。
- 数据无须加标签 。读取数据前,Avro 能够获取模式定义,这使得 Avro 在数据编码时只需要保留更少的类型信息,有利于减少序列化后的数据大小 。
- 无须手工分配的域标识 。Thrift 和 Protocol Buffers 使用一个用户添加的整型域唯一性定义一个字段,而 Avro 则直接使用域名,该方法更加直观、更加易扩展 。
参考:Avro学习入门3、在 Yarn 中应用Apache Avro 最初是为 Hadoop 量身打造的 RPC 框架,考虑到稳定性,YARN 暂时采用 Protocol Buffers 作为序列化库,RPC 仍使用 MRv1 中的 RPC,而 Avro 则作为日志序列化库使用 。在 YARN MapReduce 中,所有事件的序列化 / 反序列化均采用 Avro 完成,相关定义在 Events.avpr 文件中 。
三、总结本节简要介绍了 Yarn 中五个重要的基础库,了解这些库会帮助了解 Yarn 代码逻辑和数据传递方式 。对其中两个第三方开源库进行了介绍 。Protocol Buffers 用作 RPC 函数参数的序列化和反序列化;Avro 在日志和事件部分的序列化库使用 。
经验总结扩展阅读
- 吸引人的水果店名 水果店取什么名字最旺
- 4大星座在开学后 学业运高涨
- 2023年4月宜订婚的日子是哪天
- 2023年4月什么日子做生意最好
- 征信会影响公积金贷款额度吗
- 楼板下无梁可以砌墙吗
- 提前还贷银行有什么要求
- 2023年12月哪天相亲最好最吉利
- 2023年五行缺火的男孩适合取的名字100个
- 2023年有火有土的男孩名字有哪些