yarn如何隔离资源?
1,在操作系统上的进程运行所需要的资源没有比操作系统自身更清楚的了,所以在/proc/{pid} 下就有各个进程的资源情况,yarn只需要读取分配给container进程的资源信息即可。
2,yarn的资源就是指cpu和内存。
3,cpu主要影响进程运行的快慢,yarn主要通过cgroup技术来做限制,需要使用jni调用native c代码完成。
4,内存决定进程的生死问题。在container预先向RM申请资源的情况下,第一次超过时标记“年龄”为1,后续如果再超过则有可能被kill掉。
5,所以控制内存,实际就是监控内存使用情况。
yarn如何调度资源?
1,分布式计算都是把任务改成小task,然后分发到各个container执行。
2,再AM向RM申请资源时,基本就决定了哪个task到哪个container去执行,所以task分发到container会有RPC调用,task完成之后要收集也会有RPC调用。其实MapReduce到后来已经变成分布式计算的鼻祖思想了。
3,调度策略:FIFO:谁先到达谁先执行
4,调度策略:容量调度器(Capacity Scheduler):谁需要的资源少谁先执行
5,调度策略:公平调度器(Fair Scheduler):谁优先级高谁先执行