在YARN中,应用程序主机向资源管理器请求资源,以便可以启动该应用程序的容器。
应用程序主服务器在启动第一个容器之前是否等待分配所有资源,或者是否请求每个容器,并且当它获取容器的资源时,它会开始启动该特定资源容器? 即只有部分资源可用的情况?是否等待资源被释放?或根据可用资源继续进行?
MR应用程序主服务器如何确定MR作业的资源要求? YARN MR客户端是否确定并将其发送到AM或AM找到它?如果是这样,这基于什么?我相信这是可配置的,但我可能会谈到没有提供内存,CPU时的默认情况。
答案 0 :(得分:1)
不,AM不会等待分配所有资源。相反,它会在资源管理器为其提供资源时调度/启动容器。
当驱动程序创建作业时,每个容器请求的大小在作业配置中定义。如果没有为作业显式设置值,则使用mapred-site和mapred-default中的值(请参阅https://hadoop.apache.org/docs/r2.7.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml)以获取mapreduce.map.memory.mb,mapreduce.reduce.memory.mb mapreduce的默认值。 map.cpu.vcores和mapreduce.reduce.cpu.vcores。如何将这些值转换为授予的资源有点复杂,并且基于使用的调度程序,最小容器分配设置等。
我不确定MR应用程序主机要求的最大容器数是否为(映射器的输入拆分数)+(减速器数)。 MR app master将在完成容器时释放容器(例如,如果你有1,000个映射器容器但只有20个reducer,它将在不再需要时释放其他980个容器)。