机架感知和名称节点之间的区别

时间:2015-02-28 17:05:16

标签: hadoop hdfs

我正在浏览Hadoop,我怀疑Rack wareness和Name Node之间是否存在差异。 Rack架构和名称节点将保留在同一个框中

2 个答案:

答案 0 :(得分:3)

正如Aviral正确地说的那样,问题一直很模糊。但只是引用你的理解,

Namenode: NameNode是HDFS文件系统的核心。它保留文件系统中所有文件的目录树,并跟踪整个集群中文件数据的保存位置。它不存储这些文件本身的数据。 客户端应用程序只要希望找到文件,或者想要添加/复制/移动/删除文件,就可以与NameNode通信。 NameNode通过返回数据所在的相关DataNode服务器列表来响应成功的请求。 您可以详细了解此概念here

机架意识:简单来说,机架识别是策略namenode用于根据机架信息选择最近的datanode的策略。您可以阅读详细信息here

此外,我想建议this blog

From the above blog, on Namenode

From the above blog, on Rack Awareness

图片来源Brad Hedlund

答案 1 :(得分:1)

来自Apache HDFS Users Guide

HDFS是Hadoop应用程序使用的主要分布式存储。

  

HDFS群集主要由管理文件系统元数据的NameNode和存储实际数据的DataNodes组成

通常,大型 Hadoop集群安排在机架中,并且在同一机架中的不同节点之间的网络流量比跨机架的网络流量更令人满意。此外, NameNode 尝试在多个机架上放置块的副本以提高容错能力。

来自RackAwareness教程:

  

Hadoop组件具有机架感知功能。例如,通过将一个块复制品放在不同的机架上,HDFS块放置将使用机架感知来实现容错。这可以在群集中发生网络切换故障或分区时提供数据可用性。

让我们看看Hadoop writes是如何实现的。

  1. 如果编写器位于datanode上,则第一个副本将放置在本地计算机上,否则将是随机数据节点。

  2. 第二个副本放置在另一个机架上的datanode上。

  3. 第三个副本放置在作为第二个副本的机架的不同节点上的datanode上。

  4. 由于在两个不同RAC上的三个不同节点上复制数据块,Hadoop读取操作可提供数据块的高可用性。

    至少有一个副本存储在不同的RAC上。 如果无法访问一个RAC,Hadoop仍然可以从其他RAC 获取数据块。