什么是本地DataNode?

What is local DataNode?

我正在阅读https://developer.yahoo.com/hadoop/tutorial/module2.html yahoo 制作的hadoop 模块,这里提到了它"local DataNode" 我想知道究竟什么是本地DataNode。我的猜测是一台既是 NameNode 又是 DataNode 的机器,但我想确定它到底是什么。

在 Hadoop 中,默认情况下,每个数据块被复制 3 次(复制因子为 3)。

为确保数据的可用性和持久性,Hadoop 将副本放置在 3 个不同的数据节点中:

  • 本地数据节点:客户端发起写入的数据节点(例如使用hadoop fs -cp命令)。第一个副本放在这里。如果客户端正在从集群外部写入数据,则该节点是随机选择的。 这是写入第一个副本的节点
  • Off-rack 数据节点:数据节点,存在于另一个机架上。第二个副本放在这里
  • On-Rack 数据节点:与第一个数据节点物理存在于同一机架上的数据节点。第三个副本放在这里

这确保即使一个机架出现故障,数据在另一个机架中的数据节点上仍然可用。

因此在本教程中,本地数据节点表示发起写入操作的数据节点。

举个例子。假设您正在尝试将文件 a.txt 复制到 HDFS。假设一个集群有 3 个机架并且是 rack-aware:

Rack 1: Node 1, Node 2
Rack 2: Node 3, Node 4
Rack 3: Node 5, Node 6

Also, you have another Node: Node 7, which is outside the Hadoop cluster, but is connected 
to the cluster and you can perform HDFS operations.

案例一:集群内的客户端

让我们假设您从节点 1(在机架 1 上)执行 hadoop fs -copyFromLocal a.txt /tmp/。然后 Hadoop 将尝试按如下方式放置副本:

  • 第一个副本放在节点 1 上。这是 客户端的本地数据节点
  • 第二个副本放置在机架 2(节点 3 或节点 4)或机架 3(节点 5 或节点 6)上。这是Off-Rack数据节点
  • 第三个副本放在节点2上。这是On-Rack数据节点

案例二:集群外的Client

让我们假设您从节点 7(它不是集群的一部分,客户端在其上运行)执行 hadoop fs -copyFromLocal a.txt /tmp/。然后 Hadoop 将尝试按如下方式放置副本:

  • 它将随机选择一个节点(从节点1到节点6的任何一个节点)。那么这个节点就会变成Local Data Node。假设它选择了位于机架 3 上的节点 6。
  • 现在,第二个副本放置在机架 1(节点 1 或节点 2)或机架 2(节点 3 或节点 4)上。这是Off-Rack数据节点
  • 第三个副本放在节点5上。这是On-Rack数据节点

这是理想的副本放置方式。但是,这取决于不同机架和节点上可用的space。

我也同意 Manjunath Ballur 对本地数据节点

的定义

我们可以得出结论,Local Data Node是Client程序写入第一个replica的节点。你可以把Local Data Node当做本地RAC中的DataNade。

在解决您的问题之前:

Hadoop 为 distributed storagedistributed processing 提供框架 Tera/Peta 字节的大量数据。

您引用的文章与分布式存储相关HDFS

*关于您的查询*

I am referring to MapReduce,, the first one that processes the mapper task is the local DataNode –

MapReduce 框架由一个主资源管理器、每个 cluster-node 一个从节点管理器和每个应用程序 see YARN Architecture Guide ).

所以块放置(HDFS写入)与Map reduce处理没有任何关系。

Mappers 和 Reducer 节点是根据不同的标准选择的。

分布式存储(HDFS):

HDFS processes: Name Node / Stand By Name Node + Data Node

分布式处理(地图Reduce/YARN):

YARN processes : Resource Manager + Node Manager + Application Master (aka MRAppMaster)