2017-04-09 55 views
0

我在权威指南(HDFS Concepts - blocks)中遇到以下段落,并且无法理解。hadoop - 权威指南 - 为什么hdfs中的块如此之大

MapReduce中的地图任务通常一次只能在一个块上运行,所以如果任务太少(比群集中的节点少),那么您的作业运行速度会比其他任务慢。

我想知道当任务数量少于群集中节点总数时,作业速度会如何变慢。假设在集群中有1000个节点和3个任务(通过每个块发送给单个任务的节点来完成块的任务),获得结果所需的时间总是少于具有1000节点和1000个任务是否正确?

我无法相信在权威指南中给出的段落。

回答

1

你从书中引用的段落基本上说“尽可能多地利用节点”。如果您有1000个节点并且只有3个块或任务,则只有3个节点在您的任务上运行,而其他997个节点对您的任务不起任何作用。如果您有1000个节点和1000个任务,并且这1000个节点中的每一个节点都有一部分数据,则所有1000个节点都将用于您的任务。您还可以利用数据本地化,因为每个节点都将首先处理本地数据。

+0

谢谢Celik,我了解节点的使用情况。但是,这如何与工作缓慢有关呢? –

+0

作业由多个任务组成。每项工作的任务越多,使用更多节点的机会就越大。较小的任务粒度将为您完成任务提供更好的时间平衡。主要思想是在群集中拥有最少空闲节点和最多运行节点。 – celik

相关问题