0

我正在学习 Hadoop,并且有关于 dfs.replication 和 mapreduce 如何协同工作等三个问题。假设复制 = 1,因此每个块将被复制到两个服务器/数据节点 (DN) 以处理数据。

问题1:主/名称节点(NN)和每个DN如何知道哪个DN应该在哪个块上工作(例如DN1应该处理block1还是DN2?)

问题 2:如果 DN1 失败,NN 不会立即知道。根据我阅读的PPT,它会在10分钟后知道。那么当 NN 将任务重新分配给 DN2 时,NN 和 DN2 是如何知道 DN2 应该从哪个点开始追赶的呢?

问题3:有了云的概念,DN可以在世界任何地方。因此,如果它们彼此相距很远,为了将大量块从客户端发送到 DN,将导致大量流量。如果很多服务器都在做这种工作,对互联网来说会不会是一个很大的负担?

4

1 回答 1

2

答案 1:调度程序会将一些工作分配给其中一个 TaskTracker。Hadoop 带有一些调度器(12)或者可以编写自定义调度器。

回答 2 :只要处理失败,块的处理就会从头开始。

答案 3:Hadoop 不是在节点之间的网络延迟非常高的情况下设计的。因此,应在 DC 或可用区内创建节点。

于 2013-10-09T07:50:24.730 回答