我正在阅读第4版的“Hadoop The Definitive Guide”,并为YARN'S DRF(第4章,主导资源公平)中提供了这个解释
想象一个总共有100个CPU和10 TB内存的集群。应用程序A请求(2个CPU,300 GB)的容器,而应用程序B请求容器(6个CPU,100 GB)。 A的请求是群集的(2%,3%),因此内存占主导地位,因为其比例(3%)大于CPU(2%)。 B的要求是(6%,1%),因此CPU占主导地位。由于B的容器请求在主导资源中是两倍(6%对3%),因此在公平共享下将分配一半的容器。
我无法理解it will be allocated half as many containers under fair sharing
的含义。我猜it
这里是Application B
,而Application B
被分配了应用程序A容器数量的一半。这样对吗?为什么Application B
分配较小的容器,即使它需要更多资源?
对某些解释文件的任何建议和指示都会受到如此多的赞赏。提前谢谢。
答案 0 :(得分:20)
显性资源计算器基于显性资源公平(DRF)的概念。
要了解DRF,您可以参考此处的论文:https://people.eecs.berkeley.edu/~alig/papers/drf.pdf
在本文中,请参阅4.1节,其中给出了一个例子。
DRF尝试均衡主导份额(A的内存要求= B的CPU要求)。
<强>解释强>
Total Resouces Available
:100个CPU,10000 GB内存
Requirements of Application A
:2个CPU,300 GB内存
Requirements of Application B
:6个CPU,100 GB内存
A's dominant resource is Memory
(2%的CPU占3%的内存)
B's dominant resource is CPU
(6%的CPU与1%的内存)
让我们假设&#34; A&#34;分配了x
个容器和&#34; B&#34;已分配y
个容器。
A的资源要求
2x CPUs + 300x GB Memory (2 CPUs and 300 GB Memory for each container)
B的资源要求:
6y CPUs + 100y GB Memory (6 CPUs and 100 GB Memory for each container)
总要求是:
2x + 6y <= 100 CPUs
300x + 100y <= 10000 GB Memory
DRF将尝试平衡A和B的主要需求。
A's dominant need: 300x / 10000 GB (300x out of 10000 GB of total memory)
B's dominant need: 6y / 100 CPUs (6y out of 100 CPUs)
DRF will try to equalise: (300x / 10000) = (6y / 100)
Solving the above equation gives: x = 2y
如果替换x = 2y
并求解步骤3中的方程式,则得到x = 20且y = 10。
这意味着:
Application A is allocated 20 containers: (40 CPUs, 6000 GB of Memory)
Application B is allocated 10 containers: (60 CPUs, 1000 GB of memoty)
你可以看到:
Total allocated CPU is:
40 + 60&lt; = 100个CPU可用
Total allocated Memory is:
6000 + 1000&lt; = 10000 GB内存可用
因此,上述解决方案解释了句子的含义:
Since B’s container requests are twice as big in the dominant resource (6%
versus 3%), it will be allocated half as many containers under fair sharing.