在hadoop上的机架意识

时间:2016-11-07 10:44:27

标签: hadoop hdfs

我正在经历Hadoop。我对Rack Awareness有疑问:

  1. 是逻辑还是物理机架?
  2. 为什么对于每个数据块,一个机架中将存在两个副本,另一个机架中存在另一个副本?
  3. 例如,如果我有三个机架并且副本因子= 3,为什么它不会在每个机架中放置每个块副本?

3 个答案:

答案 0 :(得分:2)

机架在Hadoop Rack意识中是合乎逻辑的。

关于副本放置政策:

  

机架感知副本放置策略的目的是提高数据可靠性,可用性和网络带宽利用率       不同机架中两个节点之间的通信必须通过交换机。在大多数情况下,机器之间的网络带宽   相同的机架大于机器之间的网络带宽   不同的架子。

当复制因子为3时,HDFS的放置策略是将一个副本放在本地机架中的一个节点上,另一个放在另一个(远程)机架中的节点上,而最后一个放在同一个远程机架中的另一个节点上

此策略会削减机架间写入流量,从而提高写入性能。

机架故障的可能性远小于节点故障的可能性;此策略不会影响数据可靠性和可用性保证。但是,它确实减少了读取数据时使用的聚合网络带宽,因为块只放在两个唯一的机架而不是三个 三分之一的副本位于一个节点上,三分之二的副本位于一个机架上,另外三个副本均匀分布在剩余的机架上。此策略可提高写入性能,而不会影响数据可靠性或读取性能。

请参阅文档Hadoop Data replication

答案 1 :(得分:1)

  • 逻辑。您将为Hadoop提供一个外部脚本,用于转换数据节点'主机名到机架名称。

  • 机架间带宽是一种昂贵的资源(比同一机架内的带宽贵)。因此,这是可靠性和资源使用之间的权衡。

答案 2 :(得分:1)

  

是逻辑还是物理机架?

逻辑

  

为什么对于每个数据块,一个机架中将存在两个副本,另一个机架中存在另一个副本?

     

例如,如果我有三个机架并且副本因子= 3,为什么它不会在每个机架中放置每个块副本?

如果网络交换机出现故障或群集内的分区,则可以提供数据可用性。

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

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

有关详细信息,请参阅HdfsUserGuide的Apache文档