Hadoop - YARN 通信协议

一 简单介绍

RPC协议是连接各个组件的“大动脉”,了解不同组件之间的RPC协议有助于我们更深入地学习YARN框架。

在YARN中。不论什么两个需相互通信的组件之间仅有一个RPC协议,而对于不论什么一个RPC协议,通信两方有一端是Client,还有一端为Server,且Client总是主动连接Server的,因此。YARN实际上採用的是拉式(pull-based)通信模型。

二  协议类型

YARN主要由下面几个RPC协议组成,各组件的通信协议(箭头指向的组件是RPC
Server,而箭头尾部的组件是RPC Client),例如以下图所看到的:

 YARN 组件间主要通信协议

JobClient(作业提交client)与RM之间的协议— ApplicationClientProtocol:JobClient通过该RPC协议提交应用程序、查询应用程序状态等。

Admin(管理员)与RM之间的通信协议—ResourceManagerAdministrationProtocol:Admin通过该RPC协议更新系统配置文件。比方节点黑白名单、用户队列权限等。

AM与RM之间的协议—ApplicationMasterProtocol:AM通过该RPC协议向RM注冊和撤销自己,并为各个任务申请资源。

AM与NM之间的协议—ContainerManagementProtocol:AM通过该RPC要求NM启动或者停止Container,获取各个Container的使用状态等信息。

NM与RM之间的协议—ResourceTracker:NM通过该RPC协议向RM注冊,并定时发送心跳信息汇报当前节点的资源使用情况和Container执行情况。

四 Protocol Buffers

为了提高Hadoop的向后兼容性和不同版本号之间的兼容性,YARN中的序列化框架採用了Google开源的Protocol Buffers。

除序列化/反序列化之外。Protocol Buffers也提供了RPC函数的定义方法。YARN中全部RPC函数的參数均採用Protocol Buffers定义,相比MRv1中基于Writable序列化的方法,Protocol
Buffers的引入使得YARN在向后兼容性和性能方面向前迈进了一大步。

以下是使用Protocol Buffers 定义 ContainerManager RPC协议的proto文件:

      service ContainerManagerService {           

             rpc startContainer(StartContainerRequestProto) returns (StartContainerResponseProto);

             rpc stopContainer(StopContainerRequestProto) returns (StopContainerResponseProto);
              

             rpc getContainerStatus(GetContainerStatusRequestProto) returns (GetContainerStatusResponseProto); 

       }

除此之外还有例如以下proto文件:

applicationmaster_protocol.proto:定义了AM与RM之间的协议—ApplicationMasterProtocol。

applicationclient_protocol.proto:定义了JobClient(作业提交客户端)与RM之间的协议—ApplicationClientProtocol。

containermanagement_protocol.proto:定义了AM与NM之间的协议—Container-ManagementProtocol。

resourcemanager_administration_protocol.proto:定义了Admin(管理员)与RM之间的通信协议—ResourceManagerAdministrationProtocol。

yarn_protos.proto:定义了各个协议RPC的參数。

ResourceTracker.proto:定义了NM与RM之间的协议—ResourceTracker。

除了以上几个协议。YARN还使用Protocol Buffers对MapReduce中的协议进行了又一次定义:

MRClientProtocol.proto:定义了JobClient(作业提交client)与MRAppMaster之间的协议—MRClientProtocol。

mr_protos.proto:定义了MRClientProtocol协议的各个參数。

五 小结

YARN各个协议间的通信方式採用了pull-based通信模型。而不是push-base模型。pull-based通信模型的长处是实现比較easy简单。缺点是通信延迟比較大。与之相反的是。push-base模型实现比較复杂,可是它能够降低组件间的通信延迟。

时间: 2025-01-12 05:52:44

Hadoop - YARN 通信协议的相关文章

Hadoop -YARN 应用程序设计概述

一概述 应用程序是用户编写的处理数据的统称,它从YARN中申请资源完成自己的计算任务.YARN自身对应用程序类型没有任何限制,它可以是处理短类型任务的MapReduce作业,也可以是部署长时间运行的服务的应用程序.应用程序可以向YARN申请资源完成各类计算任务. 在YARN上开发一个应用程序,通常而言,需要开发两个组件,分别是客户端和ApplicationMaster,其中客户端主要作用是将应用程序提交到YARN上,并与YARN 和Application Master进行交互,查询应用程序的状态

决胜大数据时代:Hadoop&Yarn&Spark企业级最佳实践(8天完整版脱产式培训版本)

Hadoop.Yarn.Spark是企业构建生产环境下大数据中心的关键技术,也是大数据处理的核心技术,是每个云计算大数据工程师必修课. 课程简介 大数据时代的精髓技术在于Hadoop.Yarn.Spark,是大数据时代公司和个人必须掌握和使用的核心内容. Hadoop.Yarn.Spark是Yahoo!.阿里淘宝等公司公认的大数据时代的三大核心技术,是大数据处理的灵魂,是云计算大数据时代的技术命脉之所在,以Hadoop.Yarn.Spark为基石构建起来云计算大数据中心广泛运行于Yahoo!.阿

Hadoop YARN资源隔离技术

YARN对内存资源和CPU资源采用了不同的资源隔离方案.对于内存资源,它是一种限制性资源,它的量的大小直接决定应用程序的死活,因为应用程序到达内存限制,会发生OOM,就会被杀死.CPU资源一般用Cgroups进行资源控制,Cgroups控制资源测试可以参见这篇博文Cgroups控制cpu,内存,io示例,内存资源隔离除Cgroups之外提供了另外一个更灵活的方案,就是线程监控方案. 默认情况下YARN采用线程监控的方案控制内存使用,采用这种机制的原因有两点: 1.Java创建子进程采用了"for

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/util/Apps Hadoop2.6.0编程问题与解决

从hadoop 1.2.1升级到 Hadoop2.6.0,调试写代码,还是遇到一些问题的.这里记录一下,后续如果自己再遇到类似问题,那也好找原因了. 在eclipse里编译运行 WordCount,出现以下错误. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/util/Apps at java.lang.ClassLoader.defineClass1(Native M

hadoop yarn 运行wordcount时执行完成,但是返回错误

错误信息如下: 15/09/05 03:48:02 INFO mapreduce.Job: Job job_1441395011668_0001 failed with state FAILED due to: Application application_1441395011668_0001 failed 2 times due to AM Container for appattempt_1441395011668_0001_000002 exited with exitCode: 1 F

Apache Hadoop YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop 2

Apache Hadoop YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop 2 .mobi: http://www.t00y.com/file/79497801 Apache Hadoop YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop 2.pdf: http://www.t00y.com/file/8034244

Apache Hadoop YARN: 背景及概述

从2012年8月开始Apache Hadoop YARN(YARN = Yet Another Resource Negotiator)成了Apache Hadoop的一项子工程.自此Apache Hadoop由下面四个子工程组成: Hadoop Comon:核心库,为其他部分服务 Hadoop HDFS:分布式存储系统 Hadoop MapReduce:MapReduce模型的开源实现 Hadoop YARN:新一代Hadoop数据处理框架 概括来说,Hadoop YARN的目的是使得Hado

hadoop错误org.apache.hadoop.yarn.exceptions.YarnException Unauthorized request to start container

错误: 14/04/29 02:45:07 INFO mapreduce.Job: Job job_1398704073313_0021 failed with state FAILED due to: Application application_1398704073313_0021 failed 2 times due to Error launching appattempt_1398704073313_0021_000002. Got exception:     org.apache

Hadoop YARN: 1/1 local-dirs are bad: /var/lib/hadoop-yarn/cache/yarn/nm-local-dir; 1/1 log-dirs are bad: /var/log/hadoop-yarn/containers hdfs硬盘90% yarn unhealthy

1/1 local-dirs are bad: /var/lib/hadoop-yarn/cache/yarn/nm-local-dir; 1/1 log-dirs are bad: /var/log/hadoop-yarn/containers Node Manager logs 1 2 3 yarn.server.nodemanager.DirectoryCollection: Directory /var/lib/hadoop-yarn/cache/yarn/nm-local-dir er