HDFS 上传文件的不平衡,Balancer问题是过慢

至HDFS上传文件。假定从datanode开始上传文件,上传的数据将导致目前的当务之急是全datanode圆盘。这是一个分布式程序的执行是非常不利。

解决方案:

1、从其他非datanode节点上传

可以hadoop文件夹复制一份到一个不在集群中的节点(直接从非datanode的namenode上传也能够,可是这样不太好。会添加namenode的负担。而且时间长了会让namenode上放了各种乱七八糟的文件),在这个节点上不启动不论什么hadoop进程,可是能够当作client使用。

上传文件到集群。

也能够自己写一个上传文件的程序、在其它非集群节点上执行来上传文件。在程序中要注意自己设置必要的配置,比方namenode的url、副本数等等,由于假设不设置,会使用你程序中所带的hadoop jar包中的默认配置,而不是集群的默认配置。


2、使用balancer

能够通过

hdfs balancer -threshold XX

来进行平衡,xx是一个百分比。

关于这个命令的使用方法网上一搜一大堆。

可是默认情况下,这个平衡时非常慢的,由于默认的hadoop不同意balancer占用非常大的网络带宽。

能够通过

hdfs dfsadmin -setBalanacerBandwidth newbandwidth

设置带宽,在字节

原文地址:https://www.cnblogs.com/bhlsheji/p/5027331.html