YARN被引入Hadoop 2,最初是为了改善MapReduce 的实现,但它具有足够的通用性,同样可以支持其他的分布式计算模式。
YARN提供请求和使用集群资源的API,但这些API很少直接用于用户代码。相反,用户代码中用的是分布式计算框架提供的更高层API,这些API建立YARN之上且向用户隐藏了资源管理细节。
yarn中的调度:
YARN调度器的工作就是根据既定策略为应用分配资源
分别为:FIFO调度器(FIFOScheduler),容量调度器(CapacityScheduler)和公平调度器(FairScheduler)
FIFO调度器:队列排序,先进先出。简单易懂,优点:不需要任何配置,但不适合共享集群。缺点:小作业一直被堵塞,知道大作业完成。
容量调度器:一个独立的专门队列保证小作业已提交就可以启动。由于队列容量是为那个队列中的作业保留的。因此这种策略是以整个集群的利用率为代价的。这意味着与使用FIFO调度器相比,大作业执行时间要长。(同时执行,不用等)。
公平调度器(不看大小,只看数量):不需要预留一定量的资源,因为调度器会在所有运行的作业之间动态平衡资源。第一个(大)作业启动时,它也是唯一运行的作业,因而获得集群中所有的资源。当第二个(小)作业启动时,它被分配到集群的一半资源,这样每个作业都能公平共享资源。注意,从第二个作业的启动到获得公平共享资源之间会有时间滞后,因为它必须等待第一个作业使用的容器用完并释放出资源。当小作业结束且不再申请资源后,大作业将回去再次使用全部的集群资源。最终的效果是:既得到了较高的集群利用率,又能保证小作业能及时完成。
抢占:如果队列在fair share preemption timeout指定的时间内获得的资源仍然低于其公平共享份额的一半,那么调度器就会抢占其他容器。
延迟调度:所有的 YARN调度器都试图以本地请求为重。在一个繁忙的集群上,如果一个应用请求某个节点,那么极有可能此时有其他容器正在该节点上运行。显而易见的处理是,立刻放宽本地性需求,在同一机架中分配–个容器。然而,通过实践发现,此时如果等待一小段时间(不超过几秒),能够戏剧性的增加在所请求的节点上分配到一个容器的机会,从而可以提高集群的效率。这个特性称之为延迟调度
shuffle(混洗)和排序:
shuffle(Hadoop计算框架):map的输出到reduce的输入之间的过程。相当于一个缓冲区。内部资源占用率达到80%时,开始向磁盘传输数据
hadoop之yarn
最新推荐文章于 2023-03-29 14:17:19 发布