上一部分我们讲了下MapReduce,这一篇我们来看下YARN,还记得在第一篇大数据知识分享(1)中关于MapReduce和YARN之间关系的描述吗?我们来回忆下:
MapReduce做为一个数据处理应用运行在由YARN分配好的资源环境中,只关心数据的离线处理;YARN分配相关的资源,并且以容器的方式提供给MapReduce进行使用。
从这个关系中我们可以看出,YARN在Hadoop中充当着操作系统的角色,下面我们来具体看看。
一、YARN基础知识
YARN是分布式资源管理框架,主要功能有:
管理整个集群对资源(内存、CPU核数);
分配调度集群对资源。
YARN服务组件:
YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave;
ResourceManager负责对各个NodeManager上的资源进行统一管理和调度;
当用户提交一个应用程序时,需要提供一个用以跟踪和管理整个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManager启动可以占用一定的资源任务;
由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会互相影响。
ResourceManager:
全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配,主要功能有:
处理客户端请求;
启动和监控ApplicationMaster;
监控NodeManager;
资源分配和调度。
NodeManager:
整个集群有多个,负责单节点资源管理和使用,主要功能有:
单一节点的资源管理和任务管理;
处理来自ResourceManager的命令;
处理来自ApplicationMaster的命令;
NodeManager管理抽象容器,这些容器代表着可供一个应用程序使用的针对每个节点的资源;
定时向ResourceManager汇报本节点的资源使用情况和各个Container的运行状态。
ApplicationMaster:
管理一个在YARN内运行的应用程序的每个实例,主要功能有:
数据切分;
为应用程序申请资源,并进一步分配给内部任务;
任务监控与容错;
负责协调来自ResourceManager的资源,并监视容器的执行和资源的使用(CPU、内存等资源分配)。
Container:
1)YARN中的资源抽象,封装某个节点上的多维资源,如内存、CPU、磁盘、网络等,当ApplicationMaster向ResourceManager申请资源时,ResourceManager向ApplicationMaster返回的资源便是Container表示的;
2)YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源,主要的功能有:
对任务运行环境的抽象;
描述一系列信息;
任务云心资源(节点、内存、CPU);
任务启动命令;
任务运行环境。
二、YARN的资源管理
1、资源调度和资源隔离是YARN作为一个资源管理系统,最重要和最基础的两个功能。资源调度由ResourceManager完成,而资源隔离由各个NodeManager实现;
2、ResourceManager将某个NodeManager上资源分配给任务后,NodeManager按要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础保证,这就是所谓的资源隔离;
3、当谈及资源时,我们通常指内存、CPU和IO三种资源,Hadoop YARN同时支持内存和CPU两种资源的调度;
4、YARN允许用户配置每个节点上可用的物理内存资源,注意:这里“可用的”,因为一个阶段上的内存会被若干个服务共享,比如一部分给YARN,一部分HDFS,一部分Hbase等,YARN配置的只是自己可以使用的,配置如下:
表示该节点上YARN可使用的物理内存总量,默认是8192 MB,如果节点资源不够可以调整该数值,YARN无法智能调节;
2)yarn. nodemanager.vmem-pmem-ratio
任务每次使用1MB物理内存,最多可使用虚拟内存量,默认是2.1;
3)yarn. nodemanager.pmem-check-enabled
是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认为true;
4)yarn. nodemanager.vmem-check-enabled
是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认为true;
5)yarn. scheduler.minimum-allocation-mb
单个任务可申请的最少物理内存量,默认是1024MB,如果一个任务申请的物理内存量少于该值,则该对应的值改为整个数;
6)yarn. scheduler.maximum-allocation-mb
单个任务可申请的最多物理内存量,默认是8192MB
目前的CPU被划分成虚拟CPU,这里虚拟的cpu是yarn自己引入的概念,初衷是考虑到不同cpu性能可能不同,每个cpu具有的计算能力也不一样,可以通过弥补物理cpu的方式弥补不足的差异。
三、启动HDFS、YARN和MapReduce方式
方式一:
逐一启动:
HDFS:
hadoop-daemmon.sh startstop namenodedatanode secondarynamenode
YARN:
yarn-daemmon.sh startstop resourcemanagernodemanager;
MapReduce:
mr-jobhistory-daemon.sh startstop historyserver;
方法二:
分开启动:start-dfs.sh、start-yarn.sh;
方法三:
全部启动:start-all.sh;
YARN的内容相对较少,大家可以及时消化下,提前预告下次的内容是关于Hadoop HA,包括了ZooKeeper和HDFS集群。
领取专属 10元无门槛券
私享最新 技术干货