spark on yarn 内存计算
摘要:相信每个写spark 的 sparker 都有过 spark on yarn 的任务提交经历,或许在你集群资源够多的情况下,我们只关注分配的资源是否能另任务顺畅的跑起来,而不会去关注生成一个spark任务最终在yarn上面消耗了多少的资源。不过如果你的集群资源并没有多到任你挥霍的程度,这篇文章可以教你如何把集群资源了如指掌。
1.Continer数量计算
Container是Yarn中的一个动态资源分配的基础概念,其拥有一定的内存,核数,由RM分配给ApplicationMaster或者MapTask或者ReduceTask,而后,我们需要的程序就在Container为基础的容器中运行起来。
public static Container newInstance(ContainerId containerId, NodeId nodeId,
String nodeHttpAddress, Resource resource, Priority priority,
Token containerToken) {
Container container = Records.newRecord(Container.class);
container.setId(containerId);
container.setNodeId(nodeId);
container.setNodeHttpAddress(nodeHttpAddress);
container.setResource(resource);
container.setPriority(priority);
container.setContainerToken(containerToken);
return container;
}