YARN-Hadoop集群资源管理系统

YARN:Yet Another Resource Negotiator,它是在Hadoop2.0版本中出现的。YARN是一个集群资源管理系统,负责集群的统一管理和调度。
  1. 类似分布式操作系统
  2. Master/Slave架构
  3. 管理CPU及Memory
  4. 运行在YARN上的MR类似一个个应用
 
一、使用YARN解决了什么问题
  1. 解决了NameNode的单点故障问题,可以通过配置NameNode高可用来实现
  2. 提出了HDFS联邦,可以实现多个NameNode分别管理不同的目录,从而实现访问隔离及横向扩展
  3. 把资源管理和应用程序管理分开(分别使用:ResourceManager和ApplicationMaster)
  4. 具有向后兼容的特点
  5. YARN是一个框架管理器,可以把各种计算框架移植到YARN上,统一由YARN进行管理和资源调度(支持的计算框架:MapReduce,Storm,Spark,Flink……)
 
二、关于YARN基本架构的简介
在MR1中,JobTrcker有两个功能:资源管理、作业调用
在YARN中分别使用ResourceManager和ApplicationMaster进程实现上述的两个功能
ResourceManager:负责完成整个集群的资源管理和调度
ApplicationMaster:负责应用程序的相关事项
系统中所有应用资源调度的最终决定权由ResourceManager担当。每个应用的ApplicationMaster实际上是框架指定的库,其从ResourceManager调度资源并与NodeManager一同执行监控任务,NodeManager会通过心跳信息向ResourcesManager汇报自己所在节点的资源使用情况。
 
ResourceManager
整个集群当中只有一个,负责集群资源的统一管理与调度
它主要功能如下:
  1. 处理 客户端的请求
  2. 监控/启动ApplicationMaster(每一个应用对应一个ApplicationMaster,一个MR对应一个)
  3. 监控NodeManager(负责节点资源管理和使用,管理CPU和内存)
  4. 资源分配和调度
 
NodeManager:
每个节点有一个,负责资源管理和使用
NodeManager它是框架的代理,负责监控Container资源使用情况并提供类似ResourceManager或者Scheduler之类提供的报告
它主要功能:
  1. 单个节点上的资源管理与任务管理
  2. 处理来自ResourceManager的命令
  3. 处理来自ApplicationMaster的命令
        NodeManager与DN在一台机器,其中NM:资源(CPU、内存);DN:数据
 
ApplicationMaster
每一个应用程序有一个,负责应用程序的管理和任务调度
它主要功能:
  1. 数据切分
  2. 为应用程序申请资源(向ResourceManager申请),并进一步分配给内部任务
  3. 任务监控和容错
ApplicationMastr进程负责接收作业提交,协商首个Container执行应用指定的ApplicationManager(ResourceManager包含Scheduler和ApplicationManager)并提供重启失败的ApplicationManager Container的服务
 
Container
对任务运行环境的抽象
描述一系列信息
  1. 任务运行资源(节点、CPU、内存)
  2. 任务启动命令
  3. 任务运行环境
把一个应用切分成了多个部分
资源进行隔离,如:某个应用需要2G内存,与其它内存隔离,相互之间不干扰
 
YARN的工作流程
  1. 用户向YARN中的ResourceManager提交应用程序(用户程序、启动ApplicationMaster命令、ApplicationMaster程序……)
  1. ResourceManager为应用程序分配Container,接下来与Container所在的NodeManager进行通信,并由NodeManager在Container中启动对应的ApplicationMaster
  2. ApplicationMaster在Resource中进行注册,然后会为这个应用程序的各项任务申请资源,并监控其运行状态直至结束
  3. ApplicationMster采用轮询的方式,基于RPC协议向ResouceManager申请和获取所需要的资源
  4. ApplicationMaster申请到资源后,它会和申请到的Container所对应的NodeManager进行交互通信,同时要求在Container中启动任务
  5. NodeManager为要启动的任务准备好运行环境,并把启动命令写在一个脚本中,通过这个脚本来运行任务
  6. 每个任务基于RPC协议向对应的ApplicationMaster汇报自己的运行状态与进度,保证ApplicationMaster可以实时获取到任务的运行状态,这样就可以在任务运行失败时重启任务
  7. 在应用程序运行完后,对应的ApplicationMaster会与ResourceManager通信要求注销和关闭自己
 
三、如何搭建YARN
1.在hadoop的配置文件中新增信息 mapred-site.xml
   <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
2.对于yarn-site.xml配置文件进行编辑
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>192.168.2.2:8031</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>192.168.2.2:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>192.168.2.2:8034</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>192.168.2.2:8088</value>
</property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <name>yarn.log.server.url</name>
    <value> http://node1:19888/jobhistory/logs/</value>
</property>
注意:
在启动时可能会报错如下:
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
这个时候需要在sbin目录下对yarn-start.sh和yarn-stop.sh进行编辑,在头部添加如下信息
YARN_RESOURCEMANAGER_USER= root
HADOOP_SECURE_DN_USER= yarn
YARN_NODEMANAGER_USER= root
3.启动yarn
start-yarn.sh
启动后可以看到各个节点上有nodeManager,在配置resourceManager的机器上可以看到resourceManager(使用命令jps查看)
可以访问如下地址: http://192.168.2.2:8088/(这个地址在yarn-site.xml中有配置 )
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值