YARN 简介

本节将介绍Apache Hadoop Yarn的所有方面,如 Yarn架构,Yarn节点/守护进程 – 资源管理器和节点管理器。 

1. HadoopYARN – 介绍

Apache Yarn – “Yet Another Resource Negotiator”是Hadoop的资源管理层。 Yarn是在Hadoop 2.x中引入的。YARN允许不同的数据处理引擎,如图形处理,交互式处理,流处理以及批处理来运行和处理存储在HDFS(Hadoop分布式文件系统)中的数据。除了资源管理之外,Yarn还负责调度工作。 Yarn将Hadoop的强大功能扩展到其他不断发展的技术,可以利用HDFS集群的优势。

Apache Yarn也是Hadoop 2.x的数据操作与资源管理系统。 Hadoop 2.x的这种架构提供了一个通用数据处理平台,它不仅限于MapReduce。它使Hadoop能够处理除MapReduce以外的其他专用数据处理系统。它允许在部署Hadoop的相同硬件上运行多个不同的框架。

1542025781896642.png

2. Hadoop YARN架构

在本节的Hadoop Yarn章节中,我们将讨论Yarn的完整体系结构。 Apache Yarn Framework由一个称为“资源管理器”resource manager的主守护程序,称为节点管理器node manager(每个从节点一个)的从节点进程和应用程序主控 application master(每个应用程序一个)组成。

1542027197510416.png

2.1 资源管理器(RM)

它是Yarn的主守护进程。 RM管理所有应用程序中资源(CPU和内存)的全局分配。 它负责分配竞争应用程序之间的系统资源。

资源管理器有两个主要组件

Scheduler

Applicatoin Manager

a)Scheduler

 调度程序负责将资源分配给正在运行的应用程序。 调度程序是纯调度程序,这意味着它不执行监视,也不会执行应用程序的跟踪,甚至不能保证由于应用程序故障或硬件故障而重新启动失败的任务。

b)Application Manager

它管理集群中正在运行的应用主服务 Application master,即它负责启动application master,并在发生故障时在不同节点上监控和重启它们。

2.2  节点管理器(NM)

它是Yarn的从守护进程。 NM负责容器监控及其资源使用情况并向ResourceManager报告情况。 管理该机器上的用户进程。 Yarn NodeManager还会跟踪其运行节点的运行状况。 该设计还允许将长期运行的辅助服务安装到NM中; 这些是特定于应用程序的服务,作为配置的一部分进行指定,并在启动期间由NM加载。 Shuffle是NM为YARN上的MapReduce应用程序提供的典型辅助服务

2.3  应用主程序(AM)

一个应用主程序运行每个应用 它从资源管理器协商资源并与节点管理器一起工作。 它管理应用程序的生命周期。

AM在联系相应的NM以启动应用程序的各项任务之前,从RM的调度程序获取容器。

3.资源管理器重新启动 (RM Restart)

资源管理器是管理资源和调度在YARN上运行的应用程序的中央调度程序。如果发生SPOF 在YARN 集群中, 可以采取如下两种方式重启: 

资源管理器有两种类型的重新启动:

非工作保留RM重新启动 – 此重新启动增强了RM在 预先state-store中保持应用程序等状态。资源管理器将在重新启动时从状态存储区重新载入相同的信息并重新启动以前运行的应用程序。用户不需要重新提交应用程序。节点管理器和客户端在RM停机期间将继续轮询RM直到RM出现相应,当RM响应时,它将通过心跳向所有正在与之通话的NM和AM发送重新同步命令。NM将停止其所有管理的运行容器,并且重新注册运行容器到RM中。

保留工作RM重启 – 重点在于通过在重启时结合来自节点管理器的容器状态和来自应用主服务器的容器请求来重构RM的运行状态。与非工作保留RM重新启动的关键区别在于,已经运行的应用程序不会在RM重启时停止,应用程序不会由于RM 重启而丢失其处理的数据。 RM通过利用所有节点管理器发送的容器状态来恢复其运行状态。当NM与重新启动的RM重新同步时,NM不会杀死容器。它继续管理容器,并在重新注册时将容器状态发送到RM。

4.YARN资源管理器高可用性

ResourceManager(主)负责处理集群中的资源,并调度多个应用程序(例如,Spark应用程序或MapReduce)。 在Hadoop v2.4之前,RM是SPOF(单点故障)。 高可用性功能以Active / Standby ResourceManager的形式添加冗余资源管理器,以消除此单点故障。

ResourceManager HA通过Active/备用体系结构实现 – 在任何时间点,主服务器中的一个处于活动状态,其他资源管理器处于备用模式,当活动发生任何事情时,备用RM接管。 启用自动故障转移时,通过CLI或通过集成故障转移控制器自动转换为备用资源管理器为Active的管理器。

4.1手动转换故障转移 Manual transitions and failover

如果未配置自动故障转移,则管理员必须手动将其中一个资源管理器转换为活动状态。 需要将活动RM切换到备用RM,并将Standby-RM切换到Active站。可以使用YARN完成。

4.2 自动故障转移 Automatic failover

在这种情况下,不需要任何手动干预。 主服务器可以选择嵌入基于ActiveStandbyElector的Zookeeper(协作引擎)来决定哪个资源管理器应该处于活动状态。 当活动失败时,另一个资源管理器将自动选择为活动状态。 请注意,不需要运行单独的zookeeper守护程序,因为资源管理器中嵌入的ActiveStandbyElector充当故障检测器和活动节点选举器,而不是单独的ZKFC守护程序来选举。

5. YARN Web应用程序代理

默认情况下,YARN WEB Proxy作为RM的一部分运行,可以配置并以独立模式运行。因此,代理的原因是通过Yarn减少基于Web的攻击的可能性。

在YARN中,AM负责提供Web UI并将该链接发送给RM。 这带来了一些潜在的问题。 RM以可信用户的身份运行,访问该Web地址的用户将对其进行处理,并将其作为可信任用户并提供给他们链接,但实际上,AM作为不可信用户运行,并且其提供给RM的链接可能会 指向任何恶意的资源。 Web应用程序代理通过警告不拥有指定应用程序的用户连接到不受信任的站点来缓解此风险。

6. Yarn Docker Container Executor

Docker将易于使用的界面与Linux容器结合在一起,为这些容器构建文件。 Docker生成轻量级虚拟机。 Docker容器执行器允许Yarn NodeManager将YARN容器启动到Docker容器。因此,这些容器提供了一个用户代码运行的定制软件环境,与NodeManager的软件环境隔离。

因此,Docker for YARN提供了一致性(所有YARN容器都具有相似的环境)和隔离(不会干扰安装在同一台机器上的其他组件)。

7. Yarn Timeline Server

Yarn中的TimeLine Server解决了以通用方式存储和检索应用程序当前和历史信息的问题。

7.1持久化应用程序特定的信息

收集或检索特定的应用程序或框架的信息。例如,Hadoop MapReduce框架包含有关Map任务,Reduce任务和计数器的信息。应用程序开发人员通过AM或应用程序运行容器中的TimeLineClient将其特定信息发布到timeline server。

7.2 持久化已完成应用的一般信息

通用信息包括应用程序级别的数据,例如:

队列名称

用户信息等在ApplicationSubmissionContext中设置

关于每个应用程序尝试的信息 application-attempt

为应用程序运行的应用程序尝试列表

容器列表在每个应用程序尝试下运行

有关每个容器的信息

8. YARN Tmeline server V2

这是Timeline Server的主要迭代。因此,V2解决了两大挑战:

以前的版本不能很好地扩展到小型集群之外。

只有单个实例可用于写入和读取。

因此,在v2中有用于写入和读取的不同收集器,它使用分布式收集器,每个YARN应用程序使用一个收集器。

YARN 简介

发表评论

邮箱地址不会被公开。 必填项已用*标注

25 ÷ = 五

滚动到顶部