Yarn与Mr

原创
2018/11/01 18:26
阅读数 1.4K

yarn应用:

    分布式计算框架(Mapreduce、spark等)作为yarn应用运行在集群计算层(yarn)和存储层(hdfs和hbase上)。

    

Yarn的运行机制:

    

(1) 客户端练习资源管理器,请求他运行一个application master。

(2) 资源管理器找到一个能够在容器中启动application master 的节点管理器。

(3)根据application master 自己来确定的,如果所需资源少或者代码给定为一个,那么就经过简单的计算将结果反馈给客户端:如果所需资源大,或者需要节点运算,那么就向资源管理器申请更多的容器。

(4)进行分布式计算。当程序运行完成时,ApplicationMaster从Resourcemanager注销其容器,执行周期就完成了。

yarn中的调度:

在yarn中有三种调度器可以选择:FIFO Scheduler,Capacity Scheduler,Fair Scheduler。

FIFO Scheduler 把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推. FIFO Scheduler 是最简单的也是最容易理解的调度器,也不需要任何配置,但它并不适用于共享集群。大的应用可能会占用所有集群资源,这就导致其他应用被阻塞。

    而对于Capacity调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会预先占用一定的集群资源,这就导致大任务的执行时间会落后于使用FIFO 调度器时的时间。

    在Fair调度器中,我们不需要预先占用一定的系统资源,Fair调度器回为所有运行的job动态的调整系统资源。如下图所示:当第一个大job提交时,只有这一个job在运行,此时它获得了所有集群资源;当第二个小任务提交后,Fair调度器会分配一般资源给这个小任务,让这两个小任务公平的共享集群资源。需要注意的是,在下图fair调度器中,从第二个任务提交获得资源会有一定的延迟,因为它需要等待第一个任务释放占用的Container。小任务执行完成后也会释放自己占用的资源,大任务又获得了全部的系统资源。最终的效果就是Fair调度器即得到了高的资源利用率又能保证小任务及时完成。

    抢占当一个job提交到一个繁忙集群中的空队列时,job并不会马上执行,而是阻塞直到正在运行的job释放系统资源,为了使提交job的执行时间更具预测性(可以设置等待的超时时间),Fair调度器支持抢占,抢占就是允许调度器杀掉占用超过其应占份额资源队列的containers,这些cintainers资源便可被分配到应该享有这些份额资源的队列中,需要注意抢占会降低集群的执行效率,因为被终止的containers需要被重新执行。

hadoop_yarn内存调优

(1) yarn.nodemanager.resource.memory-mb

    表示在该节点上yarn可使用的物理内存数量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要减小这个值,而yarn不会只能的检测节点的物理内存总量。

(2)yarn.nodemanager.vmem-pmem-ratio

    任务每使用1mb物理内存,最多可使用虚拟内存,默认是2.1

(3)yarn.nodemanager.pmem-check-enabled

    是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

(4)yarn.nodemanager.vmem-check-enabled

    是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

(5)yarn.scheduler.minimum-allocation-mb

单个任务可申请的最少物理内存量,默认是1024(MB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数。

(6)yarn.scheduler.maximum-allocation-mb

单个任务可申请的最多物理内存量,默认是8192(MB).

(7)小总结:计算节点的内存占用量。

默认情况下,一个同时运行了 namenode,secondarynamenode 和 nodemanager 的主节点,各自使用1000M 内存,所以总计使用3000M。

默认情况下,一个从节点运行了如下守护进程:

1个 datanode:默认占用1000M内存.

1个 tasktracker:默认占用1000M内存.

最多2个map任务:2*200M=400M.

最多2个reduce任务:2*200M=400Ma

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部
返回顶部
顶部