什么是本地DataNode?

时间:2016-01-02 09:02:57

标签: hadoop hadoop2 bigdata

我正在阅读雅虎在https://developer.yahoo.com/hadoop/tutorial/module2.html制作的hadoop模块,这里提到“本地DataNode”我想知道究竟什么是本地DataNode。我的猜测是一台NameNode的机器,同时也是一个DataNode,但我想确定它到底是什么。

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

让我们举个例子。我们假设您正在尝试将文件a.txt复制到HDFS中。我们假设一个集群有3个机架,并且可以识别机架:

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(在机架1上)执行hadoop fs -copyFromLocal a.txt /tmp/。然后Hadoop将尝试按如下方式放置副本:

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

案例2 群集外的客户

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

  • 它将随机选择一个节点(从节点1到节点6的任何节点)。然后,此节点将变为本地数据节点。我们假设它选择了Rack 3上的Node 6。
  • 现在,第二个副本放置在机架1(节点1或节点2)或机架2(节点3或节点4)上。这是场外数据节点
  • 第三个副本放置在节点5上。这是机上数据节点

这是理想的副本放置应该如何发生。但是,这取决于不同机架和节点上的可用空间。

答案 1 :(得分:1)

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

的定义

我们可以得出结论,Local Data Node是客户端程序写入第一个副本的节点。您可以将本地数据节点视为本地RAC中的DataNade。

在解决您的问题之前:

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

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

有关

*关于您的查询*

  

我指的是MapReduce,第一个处理mapper任务的是本地DataNode -

MapReduce框架包含一个主ResourceManager,每个群集节点一个从NodeManager和每个应用程序的MRAppMaster see YARN Architecture Guide )。

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

The Mappers&根据不同的标准选择Reducer节点。

分布式存储(HDFS):

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

分布式处理(Map Reduce / YARN):

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