平衡器如何在HDFS中工作?

时间:2017-11-10 05:25:55

标签: hadoop hdfs hadoop2

Balancer将具有更高利用率的DataNode的副本迭代地移动到利用率较低的DataNode。

这会影响Rack awarness的概念吗?

例如 我有三台机器放在两个机架中,数据按照机架重点的概念放置。

如果我将新计算机添加到群集并运行balancer命令会发生什么?

2 个答案:

答案 0 :(得分:1)

机架意识&数据局部性是一个YARN概念。 HDFS平衡器只关心平衡Datanode的使用。

如果你有3台机器,默认情况下有3个副本,那么每台机器都可以保证有1个副本,因此有2个机架,你几乎可以保证有机架位置。

无论如何,节点位置比机架感知更高效。

如果节点之间的内部群集速度为10 GB,则数据位置是没有实际意义的。这就是为什么AWS仍然可以合理地处理S3中的数据,例如,数据局部处理不可用的原因

答案 1 :(得分:0)

如果您的问题是如何使用负载平衡:当节点加载到其阈值级别以上时,负载平衡有助于在自由节点上平均分配负载。

现在,如果对于每个数据节点,节点的已用空间与节点的总容量(称为节点的利用率)的比率与比率不同,则认为群集是平衡的集群中已用空间对集群总容量(集群利用率)的影响不超过阈值。

在运行时应用负载平衡时,它被称为动态负载平衡,这可以根据执行节点选择以直接或迭代方式实现:

  • 在迭代方法中,通过几个迭代步骤确定最终目标节点。
  • 在直接方法中,只需一步即可选择最终目标节点。

机架意识

Rack Awareness可防止整个机架出现故障时丢失数据,并允许在读取文件时利用多个机架的带宽。

在多个机架群集上,使用一个策略维护块复制,该策略在一个节点上放置的副本不超过一个副本,并且在同一个机架中放置的副本不超过两个,并且具有用于块复制的机架数量的约束应该总是小于块复制品的总数。

例如,

  1. 创建新块时,第一个副本放置在本地节点上,第二个副本放置在不同的机架上,第三个副本位于本地机架的不同节点上。
  2. 重新复制块时,如果现有副本的数量为1,则将第二个副本放在不同的机架上。
  3. 当现有副本的数量为2时,如果两个副本位于同一个机架上,则将第三个副本放在不同的机架上;
  4. 对于读取,名称节点首先检查客户端的计算机是否位于群集中。如果是,则从关闭数据节点向客户端返回块位置。
  5. 它最大限度地降低了写入成本并最大限度地提高了读取速度。