我最近将我的Cloudera环境从5.8.x(hadoop 2.6.0,hdfs-1(升级到6.3.x(hadoop 3.0.0,hdfs-1(,经过几天的数据加载moveFromLocal
,我才意识到我执行moveFromLocal
的数据节点服务器的DFS使用百分比是其他人的3倍。
然后在我加载数据的 hdfs 路径上运行带有-blocks
、-locations
和-replicaDetails
标志的fsck
;我观察到复制块 (RF=2(都在同一台服务器上,除非我手动运行hdfs balancer
,否则不会分发到其他节点。
一个月前有一个中肯的问题, hdfs put/moveFromLocal 不跨数据节点分发数据?,这并没有真正回答任何问题;我一直加载的文件是镶木地板文件。
在Cloudera 5.8.x中没有这样的问题。我是否应该在Cloudera 6.3.x中进行一些与复制,机架感知或类似内容相关的新配置?
任何帮助将不胜感激。
根据 HDFS 架构文档,"对于常见情况,当复制因子为 3 时,如果写入器位于数据节点上,HDFS 的放置策略是在本地机器上放置一个副本......">
根据同一文档,"由于NameNode 不允许 DataNode 拥有同一块的多个副本,因此创建的最大副本数是当时 DataNode 的总数。
你可能正在其中一个数据节点上执行 moveFromLocal。似乎您需要从非数据节点执行 moveFromLocal 才能在集群上均匀分布。