【问题标题】:hdfs moveFromLocal does not distribute replica blocks across data nodeshdfs moveFromLocal 不会跨数据节点分发副本块
【发布时间】:2020-04-24 21:31:38
【问题描述】:

我最近将我的 Cloudera 环境从 5.8.x(hadoop 2.6.0,hdfs-1)升级到 6.3.x(hadoop 3.0.0,hdfs-1 ) 并且在使用moveFromLocal 加载数据几天后,我才意识到我执行moveFromLocal 的datanode 服务器的DFS Used% 比那个多3 倍其他人。

然后在我加载数据的 hdfs 路径上运行 fsck-blocks-locations-replicaDetails 标志;我观察到复制的块 (RF=2) all 在同一台服务器上,并且不会分发到其他节点,除非我手动运行 hdfs balancer

一个月前有一个相关的问题, hdfs put/moveFromLocal not distributing data across data nodes?,并没有真正回答任何问题;我一直加载的文件是 parquet 文件。

Cloudera 5.8.x 中没有这样的问题。我应该在 Cloudera 6.3.x 中进行一些与复制、机架感知或类似内容相关的新配置吗?

任何帮助将不胜感激。

【问题讨论】:

  • 我不知道在同一个数据节点上可能有超过 1 个块的副本。你能仔细检查一下吗?
  • 是的,如果您将它们分布在服务器上的不同磁盘上是可能的,并且,不确定,但如果您的数据节点少于 RF,则可能驻留在同一个磁盘上,这与复制的目的背道而驰任何。但是,我的意思和我的情况完全不同;也就是说,虽然原始块(主要)分布在所有数据节点上,但每个加载数据块的副本(辅助)都在我运行加载操作的服务器上,即 moveFromLocal。

标签: hadoop hdfs replication cloudera cloudera-cdh


【解决方案1】:

您可能正在您的一个数据节点上执行 moveFromLocal。似乎您需要从非数据节点执行 moveFromLocal 以在集群上获得均匀分布。

【讨论】:

    【解决方案2】:

    根据HDFS Architecture 文档,“对于常见的情况,当复制因子为 3 时,HDFS 的放置策略是如果写入器位于数据节点上,则在本地机器上放置一个副本......”

    根据同一个文档,“由于NameNode不允许DataNodes拥有同一块的多个副本,因此创建的最大副本数是当时DataNodes的总数。 "

    【讨论】:

    • 感谢您的帮助,这真的很有帮助,我意识到我正在从旧集群中的网关节点执行 moveFromLocal,因此副本没有放在本地机器上,而是分发。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多