Yran架构

Yarn架构图.png
  1. ResourceManager(rm):处理客户端请求,启动/监控ApplicationMaster,监控NodeManager、资源分配与调度。

  2. NodeManager(nm):单个节点上的资源管理、处理来自RM的命令、处理来自AppMaster的的命令

  3. ApplicationMaster(am):数据切片、为应用程序申请资源,被分配内部任务、任务监控与容错。

  4. Container:对任务运行环境的抽象,封装了CPU、内存等资源以及环境变量、启动命令等任务运行相关信息

Yarn任务提交(工作机制)

Yarn的工作机制.png
  • 作业提交过程之YARN

    • 第12步:MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager 分别启动MapTask,MapTask对数据分区排序。

    • 第13步:MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。

    • 第14步:ReduceTask向MapTask获取相应分区的数据。

    • 第15步:程序运行完毕后,MR会向RM申请注销自己。

    • 第10步:MrAppMaster向RM申请运行多个MapTask任务资源。

    • 第11步:RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分 别领取任务并创建容器。

    • 第6步:当RM收到Client的请求后,将该job添加到容量调度器中。

    • 第7步:某一个空闲的NM领取到该Job。

    • 第8步:该NM创建Container,并产生MRAppmaster。

    • 第9步:下载Client提交的资源到本地。

    • 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。

    • 第2步:Client向RM申请一个作业id。

    • 第3步:RM给Client返回该job资源的提交路径和作业id。

    • 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。

    • 第5步:Client提交完资源后,向RM申请运行MrAppMaster。

    • 作业提交

    • 作业初始化

    • 任务分配

    • 任务运行

    • 进度和状态更新  YARN中的任务将其进度和状态返回给应用管理器, 客户端每秒(通过mapreduce.client.progressmonitor.pollinterval设置)向应用管理器请求进度更新, 展示给用 户

    • 作业完成  除了向应用管理器请求作业进度外, 客户端每5秒都会通过调用waitForCompletion()来检查作业是否完成。时间间隔可以通过mapreduce.client.completion.pollinterval来设置。作业完 成之后, 应用管理器和Container会清理工作状态。作业的信息会被作业历史服务器存储以备 之后用户核查。

Yarn调度策略

Hadoop作业调度器主要有三种:FIFO、Capacity Scheduler和Fair Scheduler。Hadoop2.9.2默认的资 源调度器是Capacity Scheduler。

  1. FIFO:先进先出调度器

  2. Capacity Scheduler 容量调度器

    Apache Hadoop默认使用的调度策略。Capacity 调度器允许多个组织共享整个集群,每个组织可 以获得集群的一部分计算能力。通过为每个组织分配专门的队列,然后再为每个队列分配一定的集 群资源,这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。除此之外,队列内 部又可以垂直划分,这样一个组织内部的多个成员就可以共享这个队列资源了,在一个队列内部, 资源的调度是采用的是先进先出(FIFO)策略。

  3. Fair Scheduler 公平调度器

    Fair调度器的设计目标是为所有的应用分配公平的资源(对公平的定义可以通过参数来设置)。公平调度也可以在多个队列间工作。举个例子,假设有两个用户A和B,他们分别拥有一个队列。当A启动一个job而B没有任务时,A会获得全部集群资源;当B启动一个job后,A的job会继续运 行,不过一会儿之后两个任务会各自获得一半的集群资源。如果此时B再启动第二个job并且其它 job还在运行,则它将会和B的第一个job共享B这个队列的资源,也就是B的两个job会用于四分之 一的集群资源,而A的job仍然用于集群一半的资源,结果就是资源最终在两个用户之间平等的共 享

调度器.png

Yarn多租户资源隔离配置

Yarn集群资源设置为A,B两个队列,

  • A队列设置占用资源70%主要用来运行常规的定时任务,

  • B队列设置占用资源30%主要运行临时任务,

  • 两个队列间可相互资源共享,假如A队列资源占满,B队列资源比较充裕,A队列可以使用B队列的 资源,使总体做到资源利用最大化.

选择使用Fair Scheduler调度策略!!
配置yarn.xml

12<property>3    <name>yarn.resourcemanager.scheduler.classname>      4  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedulervalue>5    <description>In case you do not want to use the default schedulerdescription>6property>

在Hadoop安装目录的/etc/hadoop创建fair-scheduler.xml文件

 1<?xml  version="1.0" encoding="UTF-8" standalone="yes"?> 2<allocations> 3    <defaultQueueSchedulingPolicy>fairdefaultQueueSchedulingPolicy> 4    <queue name="root" > 5        <queue name="default"> 6               7            <aclAdministerApps>*aclAdministerApps> 8               9            <aclSubmitApps>*aclSubmitApps>10              11            <maxResources>9216 mb,4 vcoresmaxResources>12            <maxRunningApps>100maxRunningApps>13              14            <minResources>1024 mb,1vcoresminResources>15            <minSharePreemptionTimeout>1000minSharePreemptionTimeout>16            <schedulingPolicy>fairschedulingPolicy>17            <weight>7weight>18        queue>19        <queue name="queue1">20            <aclAdministerApps>*aclAdministerApps>21            <aclSubmitApps>*aclSubmitApps>22            <maxResources>4096 mb,4vcoresmaxResources>23            <maxRunningApps>5maxRunningApps>24            <minResources>1024 mb, 1vcoresminResources>25            <minSharePreemptionTimeout>1000minSharePreemptionTimeout>26            <schedulingPolicy>fairschedulingPolicy>27            <weight>3weight>28        queue>29    queue>30    <queuePlacementPolicy>31        <rule create="false" name="specified"/>32        <rule create="true" name="default"/>33    queuePlacementPolicy>34allocations>

NameNode 如何支撑高并发访问

  1. 分段锁

  2. 双缓冲机制

NameNode 如何支撑高并发访问

在Hadoop安装目录的/etc/hadoop创建fair-scheduler.xml文件

本地提交到yarn_Hadoop(四) Yarn相关推荐

  1. 本地提交到yarn_Flink on Yarn三部曲之三:提交Flink任务

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本文是<Flink on Yarn三部曲> ...

  2. 本地提交spark_Spark在Windows下运行,本地提交spark到远程yarn集群

    [问题]Spark在windows能跑集群模式吗? 我认为是可以的,但是需要详细了解cmd命令行的写法.目前win下跑spark的单机模式是没有问题的. [关键点]spark启动机制容易被window ...

  3. MapReduce Job本地提交过程源码跟踪及分析

    MapReduce Job作业的提交过程可以分为本地提交模式与集群模式提交,这两种提交模式与org.apache.hadoop.mapred.LocalJobRunner.org.apache.had ...

  4. 本地提交spark_spark快速入门(三)-------spark部署及运行模式

    spark支持多种部署方案,包括spark自带的standalone资源调度模式(StandAlone):运行在hadoop的yarn资源调度框架中(SparkOnYARN):local本地模式:可以 ...

  5. spark 序列化错误 集群提交时_【问题解决】本地提交任务到Spark集群报错:Initial job has not accepted any resources...

    本地提交任务到Spark集群报错:Initial job has not accepted any resources 错误信息如下: 18/04/17 18:18:14 INFO TaskSched ...

  6. 如何撤消Git中的最新本地提交?

    我不小心将错误的文件提交给Git ,但是我还没有将提交推送到服务器. 如何撤消本地存储库中的那些提交? #1楼 我想撤消我们共享存储库中的最新五次提交. 我查找了要回滚的修订版ID. 然后我输入以下内 ...

  7. git 恢复被覆盖本地提交内容

    经常会有本地提交后,拉取远端代码 出现变基 把本地新的代码修改提交记录不幸被覆盖的情况,这个时候我们可以打开终端 cd 到项目文件所在,接下来 第一步,git reflog,这个时候会出现所有的本地提 ...

  8. phpstorm如何回滚。并取消本地提交

    1.现在我提交到本地 当前git版本为4b53dca9 上一版本为965cdf14 2.现在执行回滚操作,取消本地提交 版本复制到这里,点击reset就会回滚了 如需使用git命令操作,请参考链接ht ...

  9. 丢弃Git中的本地提交

    由于一些糟糕的挑选,我的本地Git存储库目前在原点之前提交了五个提交,并且状态不佳. 我想摆脱所有这些提交并重新开始. 显然,删除我的工作目录并重新克隆会这样做,但是再次从GitHub下载所有内容似乎 ...

最新文章

  1. 【计算机网络】物理层 : 总结 ( 物理层特性 | 码元速率 | 通信方式 | 数据传输方式 | 信号类型 | 编码与调制 | 奈氏准则 | 香农定理 | 传输介质 | 物理层设备 ) ★★★
  2. 让phpstorm 支持 vue文件并且语法高亮
  3. Yeslab现任明教教主ISE课程前七部分免费发布
  4. ReSharper 全教程
  5. 彼尔盖茨的十句话,绝对让你改变一生
  6. 开发聚合四方支付系统个人免签支付系统API四方系统支持定制
  7. 京瓷p5018cdn教程_京瓷ECOSYS P5018cdn驱动
  8. Python代码画喜羊羊怎么画_Python画图的这几种方法,你学会了吗
  9. 南京大学计算机考研复试线2021,南京大学2021年考研复试基本分数线已发布
  10. 作为产品经理的你,画原型图时崩溃过吗?
  11. vue实现通过手机号发送短信验证码登录
  12. 如何看待中科院合肥研究院 90 多名科研人员集体辞职?
  13. 玲珑杯-射击气球-点到线段的距离
  14. elasticsearch(es)在用户画像业务上的应用【elasticsearch(es)性能调优】
  15. python环境迁移:从联网笔记本到离线服务器
  16. 一篇可能让你每年多赚5万的写简历技术贴!
  17. MATLAB的figure文件保存成高清图片的技巧01
  18. 中国海洋大学c语言题库,2014级中国海洋大学C语言上机题库与答案.docx
  19. CRMEB知识付费系统v1.6.0版
  20. 计算机网络协议分析 第14课 SCTP

热门文章

  1. 以某一用户名和密码 登录请求脚本_linux expect自动交互脚本
  2. linux redis php,Linux下编译redis和phpredis的方法
  3. 服务器打不QQ显示00001,QQ登录超时00001怎么处理?
  4. pythonidea_idea集成python插件
  5. java程序阅读技巧_Java程序员阅读源码的小技巧,原来大牛都是这样读的,赶紧看看!...
  6. android studio 动画效果图,Android Studio如何动画移动视图?
  7. c4d fbx大小_C4D一键竖排文字预设 建模辅助
  8. 【小白学习C++ 教程】十、C++中指针和内存分配
  9. 三、ResNet50预置算法提高美食分类识别精确度
  10. 二十、欢迎来到掘金量化