【深入浅出 Yarn 架构与实现】2-1 Yarn 基础库概述( 二 )


二)Apache Avro1、简要介绍Apache Avro 是 Hadoop 下的一个子项目 。它本身既是一个序列化框架,同时也实现 了 RPC 的功能 。但由于 Yarn 项目初期,Avro 还不成熟,Avro 则作为日志序列化库使用,所有事件的序列化均采用 Avro 完成 。特点:

  • 丰富的数据结构类型;
  • 快速可压缩的二进制数据形式;
  • 存储持久数据的文件容器;
  • 提供远程过程调用 RPC;
  • 简单的动态语言结合功能 。
相比于 Apache Thrift 和 Google 的 Protocol Buffers , Apache Avro 具有以下特点:
  • 支持动态模式 。Avro 不需要生成代码,这有利于搭建通用的数据处理系统,同时避免了代码入侵 。
  • 数据无须加标签 。读取数据前 , Avro 能够获取模式定义,这使得 Avro 在数据编码时只需要保留更少的类型信息,有利于减少序列化后的数据大小 。
  • 无须手工分配的域标识 。Thrift 和 Protocol Buffers 使用一个用户添加的整型域唯一性定义一个字段,而 Avro 则直接使用域名,该方法更加直观、更加易扩展 。
2、安装环境 & demo
参考: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 在日志和事件部分的序列化库使用 。
【【深入浅出 Yarn 架构与实现】2-1 Yarn 基础库概述】

推荐阅读