Hadoop技术内幕_YARN--YARN基础库

Protocol Buffers

Google开源的序列化库
YARN将Protocol Buffers用到了RPC通信中,相比于MRv1的Writable,向后兼容性、扩展性等方面提高了很多
编写一个Protocol Buffers应用需要以下三步:

  1. 定义消息格式文件,通常以proto作为扩展名
  2. 使用Google提供的Protocol Buffers编译器生成特定语言的代码文件
  3. 使用Protocol Buffers库提供的API来编写应用程序

Apache Avro

Avro是Hadoop生态系统中的RPC框架,具有平台无关、支持动态模式(无需编译)等优点
目前,YARN采用Avro记录MapReduce应用程序日志(用于故障后台应用程序恢复)
Avro相比Protocol Buffers有一下特点:

  • 支持动态模式,这有利于搭建通用的数据处理系统,同时避免了代码入侵
  • 数据无须加标签
  • 无须手工分配的域标识

编写一个Avro应用需三步,同上

RPC库

Hadoop技术内幕_YARN--YARN基础库_第1张图片
image.png
RPC总体架构
  1. 序列化层
  2. 函数调用层
  3. 网络传输层
  4. 服务器端处理框架
Hadoop RPC类详解(主要由三大类组成,即RPC、Client、Server),分别对应对外编程接口、客户端实现和服务端实现
  1. ipc.RPC类分析
  2. ipc.Client类分析
image.png
  1. ipc.Server类分析
    Hadoop RPC参数调优
    1 Reader线程数目
    2 每个Handler线程对应的最大Call数目
    3 Handler线程数目
    4 客户端最大重试次数
YARN RPC实现(均由对象序列化和远程过程调用组成)
  1. 跨语言调用
  2. 引入IDL
  3. 协议兼容性

服务库和事件库

YARN将所有对象服务化,以便统一管理(创建、销毁等),而服务之间则采用事件机制进行通信,不再基于函数调用的方式

服务库

对于生命周期较长的对象,YARN采用了基于服务的对象管理模型对其进行管理,该模型主要有以下几个特点

  1. 将每个被服务的对象分为4个状态:NOTINITED(被创建)、INITED(已初始化)、STARTED(已启动)、STOPPED(已停止)
  2. 任何服务状态变化都可以触发另外一些动作
  3. 可通过组合的方式对任意服务进行组合,以便进行统一管理
事件驱动带来的变化

相比于基于函数调用的编程模型,这种编程方式具有异步,并发等特点,更加高效,因此更适合大型分布式系统

状态机库

状态机由一组状态组成,这些状态分为三类:初始状态、中间状态、最终状态

你可能感兴趣的:(Hadoop技术内幕_YARN--YARN基础库)