hdfs—hadoop上的机架感知

hec6srdp  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(409)

我正在使用hadoop。我对机架意识有疑问:
是逻辑机架还是物理机架?
为什么每个数据块都有两个拷贝在一个机架中,另一个拷贝在另一个机架中?
例如,如果我有三个机架,复制系数=3,为什么不将每个块拷贝放在每个机架中?

liwlm1x9

liwlm1x91#

机架在hadoop机架感知中是逻辑的。
关于副本放置策略:
机架感知副本放置策略的目的是提高数据可靠性、可用性和网络带宽利用率。
不同机架中的两个节点之间的通信必须通过交换机。在大多数情况下,同一机架中的计算机之间的网络带宽大于不同机架中的计算机之间的网络带宽。
当复制因子为3时,hdfs的放置策略是将一个副本放在本地机架的一个节点上,另一个放在不同(远程)机架的一个节点上,最后一个放在同一远程机架的不同节点上。
此策略减少机架间写入通信量,这通常会提高写入性能。
机架失效的几率远小于节点失效的几率;此策略不影响数据可靠性和可用性保证。但是,它确实减少了读取数据时使用的聚合网络带宽,因为一个块只放在两个而不是三个唯一的机架中。
三分之一的副本位于一个节点上,三分之二的副本位于一个机架上,另三分之一的副本均匀分布在其余机架上。此策略在不影响数据可靠性或读取性能的情况下提高了写入性能。
请参阅hadoop数据复制文档

dy2hfwbg

dy2hfwbg2#

合乎逻辑。您将为hadoop提供一个外部脚本,用于将datanodes的主机名转换为机架名。
机架间带宽是一种昂贵的资源(比同一机架内的带宽更昂贵)。因此,这是可靠性和资源使用之间的折衷。

ohtdti5x

ohtdti5x3#

是逻辑机架还是物理机架?
符合逻辑的
为什么每个数据块都有两个拷贝在一个机架中,另一个拷贝在另一个机架中?
例如,如果我有三个机架,复制系数=3,为什么不将每个块拷贝放在每个机架中?
这在集群内的网络交换机故障或分区发生时提供了数据可用性。
至少有一个复制副本存储在不同的rac上。如果一个rac不可访问,hadoop仍然可以从其他rac获取数据块。
由于在两个不同的rac上复制三个不同节点上的数据块,hadoop读取操作提供了数据块的高可用性。
有关更多详细信息,请参阅hdfsuserguide的apache文档

相关问题