存储在HDFS上的文件不平衡背后可能的原因是什么?

时间:2014-12-14 23:21:07

标签: hadoop hdfs hadoop2

有时,数据块以不平衡的方式存储在数据节点上。基于HDFS块放置策略,第一副本有利于存储在写入节点(即客户端节点)上,然后第二副本存储在远程机架上,第三副本存储在本地机架上。在此放置策略下,使数据块在数据节点上不平衡的用例有哪些?一个可能的原因是,如果写入节点很少,那么数据块的一个副本将存储在这些节点上。还有其他原因吗?

1 个答案:

答案 0 :(得分:4)

以下是数据偏差的一些潜在原因:

  • 如果某些DataNode在一段时间内不可用(不接受请求/写入),则群集最终可能会失去平衡。
  • TaskTrackers不会在群集节点之间均匀地与DataNode并置。如果我们在这种情况下通过MapReduce写入数据,则群集可能会失衡,因为托管TaskTracker和DataNode的节点将是首选。
  • 与上述相同,但使用HBase的RegionServers。
  • 大量删除数据可能会导致群集不平衡,具体取决于已删除块的位置。
  • 添加新的DataNode不会自动重新平衡群集中的现有块。

“hdfs balancer”命令允许管理员重新平衡群集。此外,https://issues.apache.org/jira/browse/HDFS-1804添加了一个新的块存储策略,该策略考虑了卷上剩余的可用空间。