Hadoop yarn 技术分享
  • 介绍
  • YARN Service
  • 事件处理
    • AsyncDispatcher
    • stateMachine
  • YARN RPC
    • RPC 设计
    • RPC 实现
  • 交互协议
  • 提交app的过程
    • 提交APP概要
    • 客户端提交app
    • RM接收请求
    • RM分配App
    • RM下发App
    • NM拉起APP
  • YARN 高可用
    • RM HA 基础
    • RM HA
  • YARN调度策略
    • Untitled
    • YARN-队列配置
  • 问题分析总结
    • 集群繁忙时偶发性空指针导致app执行失败
    • YARN 资源充足,但app等待调度排长队
    • YARN UI看不了app 日志
    • YARN UI看不了app 日志2
    • TEZ 资源不释放问题分析
    • NM频繁挂掉
    • container执行异常
    • YARN RM主备切换异常
Powered by GitBook
On this page
  • 1. 序列化
  • 2. 远程函数调用
  • 2.1 远程函数调用通用设计方案
  • 2.2 YARN RPC 具体实现
  • 3. 客户端处理模型
  • 4. 服务器处理模型

Was this helpful?

  1. YARN RPC

RPC 设计

描述RPC 设计和架构,对Hadoop RPC 有一个全局理解。

PreviousYARN RPCNextRPC 实现

Last updated 5 years ago

Was this helpful?

RPC 主要实现不同模块之间对通信,对YARN来说是底层服务。其可以理解为在业务逻辑之上,socket通信之上。

hadoop rpc 严格来讲有三部分 1. 序列化,远程函数调用 2. 客户端和服务端处理模型 3. 底层通信(NIO) 如下图所示:

本文将由 第一点和第二点 展开

1. 序列化

序列化 是用来将对象转为字节序列。 YARN RPC 使用第序列化是 protobuf

2. 远程函数调用

2.1 远程函数调用通用设计方案

2.2 YARN RPC 具体实现

2.2.1 通用接口

hadoop rpc使用了java动态代理完成对远程方法的调用。动态代理主要是利用java的反射,实现Java反射包中的InvocationHandler接口来执行代理功能,好处在于灵活性比较强。 对于hadoop的invoke方法,因为函数不在本地,所以客户端将函数调用信息打包成可序列化的WritableRpcEngine.Invocation对象,并发送给服务端,服务端进行解析。

2.2.2 client 构建

2.2.3 server 构建

RPC client 构建方式:RPC类的构建方法为getProxy()和waitForProxy(),销毁方法为stopProxy server 构建方式:通过RPC.Builder.build()完成服务器对象构建并且调用Server.start()启动。

3. 客户端处理模型

4. 服务器处理模型