2014-03-03 88 views
3

我是hadoop的新手,我对此有以下问题。Hadoop任务可以在单个节点上并行运行

这就是我在hadoop中理解的。

1)当过任何文件写入Hadoop中它存储所有数据节点的数据块(64MB默认)

2)当我们运行的MR工作,分裂将从此块中创建和在每个数据节点上分割将被处理。

3)从每个分割记录读取器将被用来在映射器端生成键/值对。

问题:

1)一个数据节点可以一次处理多个分割吗?如果数据节点容量更大?

我认为这是MR1的局限性,而用MR2 YARN我们有更好的资源利用率。

2)将在数据节点上以串行方式读取拆分,还是可以并行处理以生成键/值对? [通过随机访问数据节点拆分中的磁盘位置]

3)map/reduce体系结构中的'slot'术语是什么?我正在阅读其中一篇博客,它说YARN将在Datanode中提供更好的插槽利用率。

回答

6

让我先说说what I have understood in hadoop部分。

  1. 存储在Hadoop文件系统中的文件是不存储在所有数据节点。是的,它被分成块(默认为64MB),但是存储这些块的DataNode的数量取决于a.File Sizeb.Current Load on Data Nodesc.Replication Factord.Physical Proximity。 NameNode在决定哪些dataNodes将存储文件的块时考虑到这些因素。

  2. 再次每个数据节点可能不处理拆分。首先,DataNode只负责管理数据的存储,而不执行作业/任务。 TaskTracker是负责在单个节点上执行任务的从节点。其次,只有那些包含该特定作业所需数据的节点才会处理拆分,除非这些节点上的负载过高,在这种情况下,拆分中的数据将被复制到另一个节点并在那里处理。

现在来的问题,

  1. 同样,数据节点不负责处理作业/任务。我们通常将dataNode + taskTracker组合为一个节点,因为它们通常位于同一个节点上,处理不同的职责(数据存储&正在运行的任务)。给定节点一次可以处理多个分割。通常将单个分割分配给单个Map任务。这可以转化为在单个节点上运行的多个Map任务,这是可能的。

  2. 来自输入文件的数据以串行方式读取。

  3. 节点的处理能力由Slots的数量定义。如果一个节点有10个插槽,则意味着它可以并行处理10个任务(这些任务可能是Map/Reduce任务)。考虑到该节点的物理配置,例如内存,物理存储,处理器内核的数量等,集群管理员通常配置每个节点的插槽数量。

相关问题