什么是YARN?
Apache Hadoop YARN 是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的 资源管理和调度 ,它的引入为集群在 利用率 、 资源统一管理 和 数据共享 等方面带来了巨大好处。也就是说 YARN 在 Hadoop 集群中充当 资源管理 和 任务调度 的框架
负责资源管理和调度的组件:全局的资源管理器 ResourceManager(RM)和每个应用程序的 ApplicationMaster(AM)。应用程序可以是单个作业,也可以是 DAG 作业。ResourceManager 和 NodeManager 组成数据计算框架。
ResourceManager 负责集群资源的统一管理和调度;
NodeManager 负责单节点资源管理和使用,处理来自 ResourceManager/ApplicationMaster 的命令
ApplicationMaster 负责应用程序的管理
Container 是对任务运行环境的抽象,描述任务运行资源(节点、内存、CPU), 启动命令以及环境
我们都希望自己提交的作业能够很快被调度并且拿到足够的资源保证 job 进行顺畅。对于共享型集群来说,保证每个作业可以被合理的调度并分配相应的资源,同时考虑成本问题,变得更加困难。但是通过不断的探索 Yarn 的调度策略与可配置方案也可以逐渐接近目标。
Yarn 提供了三种可用资源调度器 (直接从 MRv1 基础上修改而来的):
FIFO Scheduler , Capacity Scheduler , Fair Scheduler
FIFO Scheduler :从字面不难看出就是先进先出策略,所有的任务都放在 一个队列 中,只有 执行完一个任务后 , 才会进行下一个 。这种调度方式最简单,但真实场景中并不推荐,因为会有很多问题,比如如果有大任务独占资源,会导致其他任务一直处于 pending 状态等。
Capacity Scheduler :也就是所谓的容量调度,这种方案更适合 多租户安全地共享大型集群 ,以便在分配的 容量限制下 及 时分配资源 。采用队列的概念,任务提交到队列, 队列 可以设置 资源的占比 ,并且支持层级队列、访问控制、用户限制、预定等等配置。不过对于资源占用比需要不断的摸索与权衡
Fair Scheduler :就是公平调度器,能够 公平地共享大型集群中的资源 ,Fair 调度器会为所有运行的 job 动态的调整系统资源。当只有一个 job 在运行时,该应用程序最多可获取所有资源,再提交其他 job 时,资源将会被重新分配分配给目前的 job,这可以让 大量 job 在合理的时间内完成,减少作业 pending 的情况 。可见 Fair Schedule 比较适用于多用户共享的大集群
随着 Hadoop 版本逐渐演化,Fair Scheduler 和 Capacity Scheduler 的功能越来越完善,因此两个调度器的功能也逐渐趋近,由于 Fair Scheduler 支持多种调度策略,因此可以认为 Fair Scheduler 具备了 Capacity Scheduler 的所有功能
实践与探索
通过分析常见的几种调度器,选用 Fair Schedule 调度器更适合共享型大集群,那么怎样的配置方案更适合多团队多用户呢?资源该按照什么比例分配给队列?用户的不同作业类型该如何区分?每个用户都希望自己可以享用更大的资源,又该如何保证成本问题?...... 实际情况下遇到的问题不计其数,不同的集群规模和应用场景也有不同阶段的问题,都是需要经过探索与实践去逐一攻破。
Fair Scheduler 支持的自定义配置项
minResource:最小资源保证
maxResource:最多可以使用的资源
maxRunningApps:最多同时运行作业数量
minSharePreemptionTimeout:最小共享量抢占时间
schedulingMode/schedulingPolicy:队列采用的调度模式
aclSubmitApps:可在队列中提交作业的用户列表
aclAdministerApps:队列的管理员列表
userMaxJobsDefault:用户的 maxRunningJobs 属性默认值
defaultMinSharePreemptionTimeout:队列 minSharePreemptionTimeout 属性默认值
defaultPoolSchedulingMode:队列 schedulerMode 属性默认值
fairSharePreemptionTimeout:公平共享量抢占时间
fairSharePreemptionThreshold:队列的公平份额抢占阈值,默认值是 0.5f
allowPreemptionFrom:确定是否允许调度程序抢占队列中的资源,默认为 true
(另外通过配置 yarn-site.xml 的 yarn.scheduler.fair.preemption 可以控制集群是否开启抢占功能)
抢占:当某个队列中有剩余资源,调度器会将这些资源共享给其他队列,而当该队列中有新的应用程序提交时,调度器会为它回收资源。那些超额使用的行为即为超发。
划分队列组织结构
合理的队列组织方案也十分重要,如下图就是小米的队列组织模型:
一级队列 :root 队列下面分为三大队列
离线分析 MR/Spark 作业队列:默认开启抢占,大量离线作业比较耗费资源,但是作业等级不算高,因此为了提高资源的利用率,可以允许在集群资源空闲的时候尽可能的超发资源,当然也意味着超发的资源会被回收
在线计算流式作业队列:针对于作业等级较高的服务,为了保证资源需要设置不支持抢占,当然也需要设置最大超发限制,避免出现集群大作业独占集群资源;
资源池 reserved 队列:预留资源来保证新队列增加,或者其他队列的资源增配相当于资源池的概念,当然也可用于作业超发使用。
二级 / 三级 / 四级队列:
资源与成本优化
总结
可能资源调度并没有最优解,需要不断探索实践去寻找适合目前现状的方案;在发展的不同阶段遇到不同的问题,通过解决问题逐渐去优化和完善。
参考自
https://mp.weixin.qq.com/s/8_1qC0LL_Q8Xf9YIWAa1Zg
一般,不会!工资计算!会计,核算!有整套程序!几道。关卡!绝不会!多算给你!也许你是穷惯了!平时工资少!退休时。正好单位!效益好些!才有几个项目钱!把你弄得!受宠若惊!好些享用吧!即便弄错!也是单位的事!你无有责任的!单位,算计。员工。不会多给的!不少给。就不错了!现如今有很多的人都在讨论,为什么会出现超发货币的情况?其实最为主要的是我国的经济需要发展,企业需要干活,而国民又要有消费标准。如果说还没有懂,那么就从反面的方向想,如果说银行没有贷款,那么就不会有现金的流入,也没有任何的回款,企业也就不能开工,同时老百姓手上没有钱,当然就不可能消费了。回顾过去的几十年之中,我国的改革开放,经济腾飞,地产产业繁荣,人民的收入有所提高,还会有通过膨胀这一切的原因都是货币超发。
一、中国有关于货币超发的历史
在2000年之前,国内的各种存款还有贷款,正处于稳步上涨的过程当中。而在2001年之后,中国加入了WTO,这是国际贸易活动有所增加,同时又遇上了金融危机,而以外汇占款为主的货币超发快速的增长。在2009年外贸做起来以后,扩大了内需变成了主旋律,而国内的信贷投放也在不断的增长,这成为了货币创造的最为主要的来源。在2016年一直到今天这种大的背景之下,资金开始脱虚入实,而银行的业务也有萎缩,这是m2增速也在下滑。所以说在将近20年的时间里,我国都是处于货币超发的状态,尤其是在2009年广义信贷以及m2的同比增速达到了45.6%和28%,这也是我国建国以来最高点,也就是这个原因,出现了经济的增长以及资产的巨大泡沫。
二、货币超发的目的
其实现如今中国货币的规模已经达到了一个比较大的规模,而且出现了较为严重的资产泡沫问题,但是现如今央行仍然不敢大幅度的降杠杆,不敢进行货币收紧政策,其实这就像是人在有病,吃止疼药是一个道理,剂量有所减少,那么疼痛感就会更强。如果说任由货币的情况宽松下去的话,那么资产的泡沫肯定也会持续,而这时企业是需要有很多的商品和财富的,这是经济需要发展。而商品和服务变多了,就会有相应的货币进行匹配,不然的话就会容易造成通货缩紧。而这种情况出现就会导致企业的信贷业务缩减,不会有钱发给员工,所以说通过缩减对于经济发展是非常不利的,那么应该怎么办呢?只能够一步一步来慢慢的去降杠杆。
所以说货币超发是有一些影响的,比如催生资产的泡沫,要知道货币超发和房价的上涨就像是孪生兄弟一样。还有就是本币贬值,因为币值稳定,可以说是经济增长的一个大前提,如果说货币超发那么就会导致很多的货币流向了房地产,股市等金融市场,这会导致人民币在外省而在内贬值出现购买力外强而内弱。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)