MapReduce--yarn

yarn简介

yarn是什么?

Yarn是属于hadoop的一个组件,不需要再单独安装,hadoop中已经存在,只需要配置。
Yarn也是一个集群有主节点和从节点。NodeManager提供资源,ResourceManager负责分配资源。

yarn作用?

集群上会运行多个程序,不会把所有资源都分配给一个程序,比如说各个部门的程序都需要运行,也就是说都需要资源,这时候我们就需要一个资源分配和调度程序,帮我们分配资源:cpu,内存,磁盘

yarn思想?

  1. 将资源管理和作业调度/监控功能划分为单独的进程,其思想是拥有一个全局的RM和每个应用程序的applicationMaster,应用程序可以是单个作业也可以使一组作业
  2. RM和NM构成了数据计算框架,RM负责分配资源,NM负责管理每台机器的资源,负责监视容器的资源使用情况。资源有(cpu,memory,disk,network)
  3. 每个应用程序ApplicationMaster实际上是一个特定的库,他的任务是与RM协商资源,并与NM一起执行和监视任务

yarn配置

  1. cp mapred-site.xml.template mapred-site.xml
    vi mapred-site.xml
  2. 配置map-site.xml
    <configuration>
     <!--用于执行mapreduce作业的运行时框架>
     <property>
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
      </property>
    </configuration>
    
  3. 配置yarn-site.xml
    <!--配置resourcemanager的主机-->
    <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>mini1</value>
    </property>
    <!--NodeManager上运行的附属服务-->
    <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
    </property>
    <!--配置resourcemanager的scheduler的内部通讯地址-->
    <property>
       <name>yarn.resourcemanager.scheduler.address</name>
       <value>mini1:8030</value>
    </property>
    <!--配置resoucemanager的资源调度的内部通讯地址-->
    <property> 
       <name>yarn.resourcemanager.resource-tracker.address</name>
       <value>mini1:8031</value>
    </property>
    <!--配置resourcemanager的内部通讯地址-->
    <property>
       <name>yarn.resourcemanager.address</name>
       <value>mini1:8032</value>
    </property>
    <!--配置resourcemanager的管理员的内部通讯地址-->
    <property>
       <name>yarn.resourcemanager.admin.address</name>
       <value>mini1:8033</value>
    </property>
    <!--配置resourcemanager的web ui 的监控页面-->
    <property>
       <name>yarn.resourcemanager.webapp.address</name>
       <value>mini1:8088</value>
    </property>
    
  4. 在resourcemanager机器上配置slaves文件,并将所有的nodemanager写入。
    目的在于让RM知道NM有哪些。

yarn启动

对于resourcemanager和nodemanager分别启动/关闭

  1. Yarn-daemon.sh start/stop resourcemanager
  2. Yarn-daemon.sh start/stop nodemanager
    一起启动/关闭
  3. start-yarn.sh
  4. stop-yarn.sh

yarn和MapReduce的关系

Hadoop是google分布式计算框架MapReduce与分布式存储系统GFS的开源实现,由分布式计算框架MapReduce和分布式存储系统HDFS(Hadoop Distributed File System)组成,具有高容错性,高扩展性和编程接口简单等特点,现已被大部分互联网公司采用。即MapReduce是hadoop组成部分,是hadoop生态圈一部分,MapReduce本身也是一个独立的离线计算框架

YARN是Hadoop的一个子项目(与MapReduce并列),是hadoop2.0的一个分支,上面说hadoop由MR和HDFS组成,说的是hadoop1.0版本,它实际上是一个资源统一管理系统,可以在上面运行各种计算框架(包括MapReduce、Spark、Storm、MPI等)。

综上所述:MR需要在yarn上运行

yarn的工作机制

在这里插入图片描述
前提:也可以理解为MRTask提交的全过程 wordCount.jar为事例运行程序

1)client调用job.waitforcompletion方法,目的向Resoucemanager提交MR任务
2)Client向RM提交申请一个应用
3)RM给客户端返回一个job资源的提交路径和任务ID
4)Client 提交jar包,切片信息,配置文件到指定的资源提交路径上
5)Client提交完资源后,通知RM上传完毕
6)RM收到client的请求之后,将要运行的任务加入到调度器中
7)当任务开始计算的时候RM会分配一个相对空闲的节点,创建container,并产生MRappMaster
8)MRappmaster下载client提交的资源到本地
9)MRappMaster向RM申请运行MapTask任务的资源(多个任务)
10)RM将运行maptask的任务分配给空闲的nodemanager,它们领取任务并且创建container
11)RM向接收到maptask任务的nodemanager发送启动maptask任务的脚本,而这两个nodemanager分别启动maptask
12)MRappMaster等待所有maptask任务结束,向RM申请资源,启动reduce task
13)Reduce task启动起来之后,向maptask获取相应分区的数据
14)最后程序运行接收之后,MRappmaster会向RM申请释放资源

对于container的补充

在YARN中,ResourceManager中包含一个插拔式的组件:资源调度器,它负责资源的管理和调度,是YARN中最核心的组件之一。

当向资源调度器申请资源,需向它发送一个ResourceRequest列表,其中,每个ResourceRequest描述了一个资源单元的详细需求,而资源调度器则为之返回分配到的资源描述Container

发出资源请求后,资源调度器并不会立马为它返回满足要求的资源,而需要应用程序的ApplicationMaster不断与ResourceManager通信,探测分配到的资源,并拉去过来使用。一旦分配到资源后,ApplicatioMaster可从资源调度器那获取以Container表示的资源,Container可看做一个可序列化Java对象

一般而言,每个Container可用于运行一个任务。ApplicationMaster收到一个或多个Container后,再次将该Container进一步分配给内部的某个任务,一旦确定该任务后,ApplicationMaster需将该任务运行环境(包含运行命令、环境变量、依赖的外部文件等)连同Container中的资源信息封装到ContainerLaunchContext对象中,进而与对应的NodeManager通信,以启动该任务

MRappMaster和ApplicationMaster

MapReduce的ApplicationMaster,就是MRAppMaster。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值