Yarn与Mr

yarn应用:node

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

    

Yarn的运行机制:框架

    

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

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

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

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

yarn中的调度:blog

在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

相关文章
相关标签/搜索