首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大数据知识分享(3)

上一部分我们讲了下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集群。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180119G0AC6500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券