hdfs movefromlocal不跨数据节点分发副本块

h79rfbju  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(448)

我最近升级了我的cloudera环境,从5.8.x(hadoop2.6.0,hdfs-1)升级到了6.3.x(hadoop3.0.0,hdfs-1),在用 moveFromLocal ,我刚刚意识到dfs使用了我所执行的datanode服务器的% moveFromLocal 比其他人多3倍。
然后跑了 fsck-blocks , -locations 以及 -replicaDetails 我加载数据的hdfs路径上的标志;我发现复制的块(rf=2)都在同一台服务器上,除非我手动运行,否则不会被分发到其他节点 hdfs balancer .
一个月前提出了一个相关的问题,hdfs put/movefromlocal not distributing data across data nodes?,这并没有真正回答任何问题;我一直加载的文件是Parquet文件。
Cloudera5.8.x中没有这样的问题。在cloudera6.3.x中,我是否应该进行一些与复制、机架感知等相关的新配置?
任何帮助都将不胜感激。

vcirk6k6

vcirk6k61#

根据hdfs架构文档,“对于常见情况,当复制因子为3时,hdfs的放置策略是,如果写入程序位于数据节点上,则在本地计算机上放置一个副本…”
因为namenode不允许datanodes拥有同一块的多个副本,所以创建的最大副本数是当时datanodes的总数

xjreopfe

xjreopfe2#

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

相关问题