Apache Hadoop YARN基本架构

简介: 【2月更文挑战第24天】

YARN总体上采用master/slave架构,其中,ResourceManager为master,NodeManager为slave, ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManager启动可以占用一定资源的任务,由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。

1、ResourceManager(RM)

RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用管理器(Applications Manager, ASM)。

  • 调度器:调度器主要功能是根据资源容量,队列等方面的限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个应用程序。YARN中的调度器是一个“纯调度器”,它不再从事任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的ApplicationMaster完成。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念“资源容器”(Resource Container,简称Container)表示,Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。在YARN中,资源调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器,YARN提供了多种直接可用的调度器,比如Fair Scheduler和Capacity Scheduler。
  • 应用程序管理器:应用程序管理器负责管理整个系统中的所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。


为了避免单个ResourceManager出现单点故障导致整个集群不可用,YARN引入主备ResourceManager实现了HA,当Active ResourceManager出现故障时,Standby ResourceManager会通过ZooKeeper选举,自动提升为Active ResourceManager。

2、ApplicationMaster(AM)

用户提交的每个应用程序均包含一个独立的AM,其主要功能包括:

  • 与RM调度器协商以获取资源(用Container表示)。
  • 将得到的资源进一步分配给内部的任务。
  • 与NM通信以启动/停止任务。
  • 监控所有任务的运行状态,并在任务运行失败时重新为任务申请资源以重启任务。


当前YARN源代码中自带了两个AM实现,一个是用于演示AM编写方法的实例程序distributedshell,它可以申请一定数目的Container运行一个shell命令或者shell脚本,另一个是运行MapReduce应用程序的AM——MRAppMaster。很多开源的计算框架和服务为了能够运行在YARN上,也提供了自己的ApplicationMaster实现,包括Open MPI、Spark、HBase、Impala等。

3、NodeManager(NM)

NM是每个节点上的资源管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态,另一方面,它接收并处理来自AM的任务启动/停止等各种请求。在一个集群中,NodeManager通常存在多个,由于YARN内置了容错机制,单个NodeManager的故障不会对集群中的应用程序运行产生严重影响。

4、Container

Container是YARN中的基本资源分配单位,是对应用程序运行环境的抽象,并为应用程序提供资源隔离环境。它封装了多维度的资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN中每个任务均会对应一个Container,且该任务只能使用该Container中描述的资源。需要注意的是,Container不同于MRv1中的slot,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。Container最终是由ContainerExecutor启动和运行的,YARN提供了三种可选的ContainerExecutor:

  • DefaultContainerExecutor:默认ContainerExecutor实现,直接以进程方式启动Container,不提供任何隔离机制和安全机制,任何应用程序最终均是以YARN服务启动者的身份运行的。
  • LinuxContainerExecutor:提供了安全和Cgroups隔离的ContainerExecutor,它以应用程序提交者的身份运行Container,且使用Cgroups为Container提供CPU和内存隔离的运行环境。
  • DockerContainerExecutor:基于Docker实现的ContainerExecutor,可直接在YARN集群中运行Docker Container。Docker是基于Linux Container技术构建的非常轻量级的虚拟机,目前被广泛应用在服务部署、自动化测试等场景中。
相关文章
|
20天前
|
存储 分布式计算 Hadoop
Hadoop是一个强大的分布式系统基础架构
【6月更文挑战第17天】Hadoop是一个强大的分布式系统基础架构
119 53
|
2天前
|
SQL 分布式计算 关系型数据库
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
10 2
|
18天前
|
资源调度 分布式计算 监控
YARN的基本架构
【6月更文挑战第19天】YARN的基本架构
32 10
|
16天前
|
分布式计算 资源调度 Hadoop
分布式系统详解--架构(Hadoop-克隆服务器)
分布式系统详解--架构(Hadoop-克隆服务器)
23 1
|
24天前
|
分布式计算 Hadoop
关于hadoop搭建的问题org.apache.hadoop.io.nativeio.NativeIO.java
关于hadoop搭建的问题org.apache.hadoop.io.nativeio.NativeIO.java
33 5
|
1月前
|
存储 分布式计算 Hadoop
使用Apache Hadoop进行分布式计算的技术详解
【6月更文挑战第4天】Apache Hadoop是一个分布式系统框架,应对大数据处理需求。它包括HDFS(分布式文件系统)和MapReduce编程模型。Hadoop架构由HDFS、YARN(资源管理器)、MapReduce及通用库组成。通过环境搭建、编写MapReduce程序,可实现分布式计算。例如,WordCount程序用于统计单词频率。优化HDFS和MapReduce性能,结合Hadoop生态系统工具,能提升整体效率。随着技术发展,Hadoop在大数据领域将持续发挥关键作用。
|
2月前
|
资源调度 分布式计算 Hadoop
Hadoop Yarn 核心调优参数
这是一个关于测试集群环境的配置说明,包括3台服务器(master, slave1, slave2)运行CentOS 7.5,每台有4核CPU和4GB内存。集群使用Hadoop 3.1.3,JDK1.8。Yarn核心配置涉及调度器选择、ResourceManager线程数、节点检测、逻辑处理器使用、核心转换乘数、NodeManager内存和CPU设置,以及容器的内存和CPU限制。配置完成后,需要重启Hadoop并检查yarn配置。
|
2月前
|
SQL 分布式计算 资源调度
Hadoop Yarn 配置多队列的容量调度器
配置Hadoop多队列容量调度器,编辑`capacity-scheduler.xml`,新增`hive`队列,`default`队列占总内存40%,最大60%;`hive`队列占60%,最大80%。配置包括队列容量、用户权限和应用生存时间等,配置后使用`yarn rmadmin -refreshQueues`刷新队列,无需重启集群。多队列配置可在Yarn WEB界面查看。
|
22天前
|
资源调度 分布式计算 Hadoop
实时计算 Flink版产品使用问题之yarn session模式中启动的任务链接是http IP,想把IP映射为主机hadoop,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
存储 SQL 分布式计算
Hadoop分布式架构
【5月更文挑战第8天】Hadoop分布式架构
30 4

推荐镜像

更多