Rack Awareness 和 Name node 的区别

Difference between Rack Awareness and Name node

我正在研究Hadoop,我怀疑Rack wareness和Name Node之间是否有区别。 Will Rack wareness 和 name node 将保留在同一个盒子上

正如 Aviral 所说的那样,这个问题非常模糊。但只是引用您的理解,

Namenode : NameNode 是 HDFS 文件系统的核心。它保留文件系统中所有文件的目录树,并跟踪文件数据在集群中的保存位置。它不存储这些文件本身的数据。 客户端应用程序在希望定位文件或想要 add/copy/move/delete 文件时与 NameNode 通信。 NameNode 通过返回数据所在的相关 DataNode 服务器列表来响应成功的请求。 您可以详细阅读此概念 here

Rack Awareness : 简单来说,rack awareness是namenode根据rack信息选择最近datanode的策略。您可以阅读详情here

此外,我想建议this blog

图片来源Brad Hedlund

来自 Apache HDFS Users Guide

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

A HDFS cluster primarily consists of a NameNode that manages the file system metadata and DataNodes that store the actual data

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

来自 RackAwareness 教程:

Hadoop components are rack-aware. For example, HDFS block placement will use rack awareness for fault tolerance by placing one block replica on a different rack. This provides data availability in the event of a network switch failure or partition within the cluster.

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

  1. 如果写入器在数据节点上,第一个副本放在本地机器上,否则是随机数据节点。

  2. 第二个副本放置在不同机架上的数据节点上。

  3. 第三个副本放置在与第二个副本不同的机架节点上的数据节点上。

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

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