一张图熟知yarn资源调度流程

来源:互联网 发布:数据库的概念模型 编辑:程序博客网 时间:2024/06/03 21:14
   1。yarn概述
     Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序
  2.Yarn的重要概念
1)yarn并不清楚用户提交的程序的运行机制
2)yarn只提供运算资源的调度(用户程序向yarn申请资源,yarn就负责分配资源)
3)yarn中的主管角色叫ResourceManager
4)yarn中具体提供运算资源的角色叫NodeManager
5)这样一来,yarn其实就与运行的用户程序完全解耦,就意味着yarn上可以运行各种类型的分布式运算程序(mapreduce只是其中的一种),比如mapreduce、storm程序,spark程序……
6)所以,spark、storm等运算框架都可以整合在yarn上运行,只要他们各自的框架中有符合yarn规范的资源请求机制即可
7)Yarn就成为一个通用的资源调度平台,从此,企业中以前存在的各种运算集群都可以整合在一个物理集群上,提高资源利用率,方便数据共享

 3.yarn资源调度全流程(核心,图片看不清的话,可以下载本地查看


工作机制详解
       0Mr程序提交到客户端所在的节点(MapReduce
       1yarnrunnerResourcemanager申请一个application
       2rm将该应用程序的资源路径返回给yarnrunner
       3)该程序将运行所需资源提交到HDFS
       4)程序资源提交完毕后,申请运行mrAppMaster
       5RM将用户的请求初始化成一个task
       6)其中一个NodeManager领取到task任务。
       7)该NodeManager创建容器Container,并产生MRAppmaster
       8ContainerHDFS上拷贝资源到本地
       9MRAppmasterRM申请运行maptask容器
       10RM将运行maptask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。
       11MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动maptaskmaptask对数据分区排序。
       12MRAppmasterRM申请2个容器,运行reduce task
       13reduce taskmaptask获取相应分区的数据。
       14)程序运行完毕后,MR会向RM注销自己。

二:mr的运行模式
    
MAPREDUCE程序运行模式
2.2.1 本地运行模式

-mapreduce程序是被提交给LocalJobRunner在本地以单进程的形式运行(yarn的本地模拟器)
-而处理的数据及输出结果可以在本地文件系统,也可以在hdfs上
    config.set("fs.defaultFS","hdfs://hadoop102:8020")  //这是集群,也可以不用配置,因为配置文件里指定了该配置 
    config.set( mapreduce.framework.name=local);//本地,本地里可以不用配置,默认配置lib文件里就是local.

- 怎样实现本地运行?写一个程序,不要带集群的配置文件(本质是你的mr程序的conf中是否有mapreduce.framework.name=local以及yarn.resourcemanager.hostname参数
- 本地模式非常便于进行业务逻辑的debug,只要在eclipse中打断点即可

如果在windows下想运行本地模式来测试程序逻辑,需要在windows中配置环境变量:
%HADOOP_HOME%  =  d:/hadoop-2.6.1
%PATH% =  %HADOOP_HOME%\bin
并且要将d:/hadoop-2.6.1的lib和bin目录替换成windows平台编译的版本(要安装hadoop的windows版本)

2.2.2 集群运行模式

- 将mapreduce程序提交给yarn集群resourcemanager,分发到很多的节点上并发执行
- 处理的数据和输出结果应该位于hdfs文件系统
- 提交集群的实现步骤:
   A、将程序打成JAR包,然后在集群的任意一个节点上用hadoop命令启动
     $ hadoop jar wordcount.jar cn.itcast.bigdata.mrsimple.WordCountDriver inputpath outputpath
   B、直接在linux的eclipse中运行main方法
   (项目中要带参数:mapreduce.framework.name=yarn以及yarn的两个基本配置,一般集群上yarn-site.xml都已配置了。如果不是本地连接的话,不需要配置)
         config.set("fs.defaultFS","hdfs://hadoop102:8020")
         config.set(mapreduce.framework.name","yarn")
         config.set("yarn.resourcemanager.hostname","hadoop103");
         方法二:也可以将core_site.xml等配置文件直接复制到工程下,也行。
   C、如果要在windows的eclipse中提交job给集群,则要修改YarnRunner类

总结:所谓的hadoop jar ,yarn jar  ,java -jar 本质都是启动jar包中main方法。
原创粉丝点击