首页 > 编程知识 正文

hadoop包含的组件,hadoop的组件或技术

时间:2023-05-04 03:48:42 阅读:57022 作者:1051

前言:你好。 我是淡定的唇膏!

Yarn是当今大数据领域最受欢迎的资源管理系统,也是Hadoop 2.0版本转换的最大特点之一!

对于Hadoop1. x版,Hadoop框架的资源管理和作业控制由JobTracker统一负责。

由于两个模块(作业控制和资源管理)的高度耦合,Hadoop MapReduce在可扩展性、容错性和对多个计算框架的支持方面存在明显缺陷!

因此,在Hadoop2. x版中,Hadoop将资源管理功能和作业控制功能划分为两个独立的进程。 也就是说,资源管理流程负责管理整个群集的资源(内存、CPU、磁盘等),而无论特定的APP应用程序如何,而工作控制流程是与APP应用程序直接相关的模块。

这样,将与传统JobTracker的APP应用相关的模块隔离开来,不仅减少了JobTracker的负载,还产生了资源整合管理平台YARN,Hadoop可以提供更多的计算帧

本文从雅虎的基本结构组成、雅虎通信协议以及雅虎资源调度流程三个方面简要分析雅虎的基本原理!

1.YARN基本结构YARN总体上为Master/slave结构,是整个资源调度框架,称为资源管理器、节点管理器、应用程序主器、容器基本体系结构图如下:

从上图可以看到,yarn的基本体系结构是客户端负责提交任务,节点管理器通过心跳机制向资源管理器报告自己负责的节点资源,应用程序管理器向RM释放

ResourceManager(RM):RM是一个全球资源管理器,负责整个系统的资源管理和分配。 主要由计划程序和应用程序管理器组成。

基于调度器(调度器的容量、队列等限制) (例如,为每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给正在运行的每个APP应用程序,并进行控制它不会监视或跟踪APP应用程序的执行状态,也不会重试失败的任务。 此外,调度程序是可插入组件,用户可以根据需要定制调度程序。 YARN有两个常见的调度程序:“公平调度器”(Fair Scheduler )和“容量调度器”(Capacity Scheduler )。

Application Manager负责管理系统中的所有APP应用程序。 接收来自客户端的请求; 为每个APP分配第一个容器以运行APP主节点; 监视应用程序主机,并在任务失败时重新启动应用程序主机正在运行的容器。

NodeManager:NodeManager主要管理群集中每个节点的资源和任务,另一方面通过心跳机制定期向RM报告自身节点的资源使用情况、每个Container的运行状况和健康状况; 另一方面,接收并处理应用程序主程序的容器启动/停止请求。

ApplicationMaster(AM):用户发送的每个APP应用程序都包括在Container上运行的AM,其主要功能包括:

与RM计划程序协商以获取资源(容器); 监视与NM通信以启动/停止任务的所有任务的执行状态,如果任务失败,则重新请求资源以恢复任务。 33558www.Sina.com/yarn的资源抽象,封装节点(如内存、CPU、磁盘和网络)上的多维资源。

有趣的是,这是一个动态资源划分单元,根据APP应用程序的需要动态生成。 此外,RM只需要告诉AM哪些Container可用,AM需要与NM进行通信才能获得特定的Container!

2 .什么是2.YARN通信协议2.1RPC? 远程过程调用(RPC )是一种远程过程调用,简单地说就是请求一个节点向另一个节点提供的服务。 举个例子,有两台服务器1和2,其中一个APP应用程序部署在一台服务器上。 2您试图调用服务器上的APP应用程序提供的函数/方法,但不能直接调用,因为它不在同一内存空间中。 要表达调用的语义或传递调用的数据,必须通过网络进行。

RPC通常采用客户端/服务器模式。 请求方为客户端,响应方为服务器。 调用流程如下图所示。 主要分为以下几个步骤。

客户端程序本地调用系统生成的Stub程序;客户端Stub程序是函数调用信息

按照网络通信模块的要求封装成消息包,并交给通信模块(也就是sockets)发送到远程服务端; 远程服务端收到此消息后,将消息发送给相应的的 server stub 程序; server stub 程序拆封消息,并调用服务器上对应的函数; 被调函数(server function)执行,并将结果返回给 server stub程序; server stub 程序将此结果封装成消息,通过网络通信模块逐级地传给 client。 RPC通信流程

值得注意的是:在上述流程中,无论是 client,还是 server 端都涉及到 stub 程序,可以把它看成一个代理程序。它使得远程函数调用看起来跟本地调用一样,对用户完全透明。

2.2YARN 包含哪些通信协议?

YARN 通过 RPC 协议实现各个组件之间的通信,在任意两个需要相互通信的组件之间仅有一个 RPC 协议。在通信双方中,一方是 Client端,另一方是 Server端,且 Client 端总是主动连接 Server ,YARN 各个组件之间的 C/S 关系如图所示,其中箭头指向的组件是 RPC Server,而箭头尾部的组件是 RPC Client。

yarn 的通信协议

从上图可知,YARN 的通信协议主要由 5 大协议组成:

JobClient 与 RM 之间 --- ApplicationClientProtocol: JobClient 通过该 RPC 协议提交应用程序、查询应用程序的状态。 Admin 与 RM 之间 --- ResourceManagerAdministrationProtocol:Admin 通过这个协议更新系统的配置文件。 AM 与 RM 之间 --- ApplicationMasterProtocol:AM 通过该协议向 RM 之间注册和注销自己,并进行资源请求。 AM 与 NM 之间 --- ContainerManagermentProtocol:AM 通过该 RPC 协议与 NM 通信,请求启动/停止任务,并获取各个 Container 的使用状态。 NM 与 RM 之间 --- ResourceTracker : NM 通过这个协议向 RM 注册,通过发送心跳信息汇报当前节点的资源使用情况、container 运行情况以及自己的健康状态。

以上各个组件之间,有且仅有一个 RPC 协议,有了这些协议,才使得这些组件能够互相通信,发挥出分布式集群的优点。

2.3RPC 实战案例

​ 说一千,道一万,都不如写一个简易的 Demo 学的更明白。通过这个简易的 Demo,模拟 RPC 的客户端、服务端、通信协议三者是如何工作的。

需求:RPC 接口协议定义一个创建文件夹的方法,服务端实现该接口协议并创建 RPC 服务;客户端通过获取服务代理并调用服务端的创建文件夹的方法!

代码实现:

创建 RPC 协议

创建 RPC 服务端

创建 RPC 客户端

运行结果

启动服务端,可以看到控制台输出:server start work! 启动客户端,可以看到客户端控制台输出:client,服务端控制台输出:server,create path。

通过上述简易 Demo 可知:通信协议其实就是接口规范,客户端和服务端都需要遵守这个规范;客户端调用通信协议方法,方法最终在服务端执行,并对用户程序是完全透明的。

3.YARN 工作调度流程

当用户向 YARN 集群中提交一个 MR 程序后,可以分成 2 个大的阶段:

首先,启动 ApplicationMaster 其次,ApplicationMaster 创建应用程序,并为该应用程序申请资源,监控它的运行状态,直到运行完成。

为了更好的理解 YARN 的工作流程,下面以 MapReduce 计算框架为例,通过提交一个 WordCount 应用程序,来全面解析 YARN 的工作机制。其运行流程如图所示:

yarn 的调度流程

在 YARN 提交一个作业,其整个过程可以分为三大阶段:作业提交、作业初始化、任务分配与运行。

3.1作业提交 用户在 client 端提交并运行一个应用程序,其中包括启动 AM 的命令、ApplicationMaster 程序和用户程序; YarnRunner 向 RM 申请一个 Application,同时 RM 返回该 应用程序的资源路径和 Application_id 给 YarnRunner; client 将运行该程序所需要的资源( 切片信息、配置文件、jar包)提交到 HDFS 上指定的路径; 资源提交完毕,向 RM 申请运行 ApplicationMaster; 3.2作业初始化 RM 将 client (可能会有多个)请求初始化成一个 Task,将该任务放入调度器中; RM 与某一个空闲的 NM 通信,并下发该任务,该 NM 为该应用程序分配第一个 Container,在这个 Container 中启动 ApplicationMaster; Container 从 HDFS 上拷贝资源到本地; 3.3任务分配与运行 AM 先向 RM 注册,这样用户便可以直接通过 RM 查看应用程序的运行状态,之后,AM 采用轮询的方式通过 RPC 协议向 RM 申请和领取资源,运行 MapTask ; RM 将 MapTask 任务分配给另外几个 NodeManager,NodeManager 创建容器; AM 与收到任务的 NM 通信,并发送程序启动脚本,要求其启动任务; ApplicationMaster 等待所有的 MapTask 运行完毕后(假设形成0、1两个分区),向 RM 申请 Container 运行 ReduceTask; Reduce 向 Map 获取属于自己分区的数据进行计算;(如:Reduce Task 0 获取所有节点上 0 分区的数据) 程序计算结束后,ApplicationMaster 向 ResourceManager 注销自己。 4.总结

本文主要阐述了 YARN 的基本架构与组成,各组件间的通信协议,YARN 的工作调度流程。

了解 YARN 的基本架构,可以帮助我们在开发工作中更好的定位问题,而通信协议规范了各个组件间的接口规范。在全作业提交流程中,揭开了各个组件间是如何协作完成一次任务运行的。

本文是 YARN 的基础篇,并未考虑深入到各个组件内的源码剖析!若有不当之处,敬请广大读者指正。

好了,今天的文章如果对你有用,请点赞、在看及分享!关于更多大数据知识,微信搜公众号:【cbdmt玩大数据】

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。