HDFS中的块复制限制

Lan*_*nWO 1 hadoop hdfs

我目前正在重建拥有区域服务器和数据节点的服务器.当我取下数据节点时,在10分钟之后,它所拥有的块将被重新复制到其他数据节点之间.我们有10个数据节点,所以当重新复制块时,我看到网络流量很大.但是,我发现每个服务器的流量大约只有500-600mbps(这些机器都有千兆位接口)所以它绝对不是网络限制的.我试图弄清楚什么限制了数据节点发送和接收块的速度.每个数据节点都有六个7200 rpm的sata驱动器,在此期间IO使用率非常低,每个驱动器只能达到20-30%.是否在hdfs中内置了一个限制,限制了复制块的速度?

Har*_*h J 9

HDFS会限制复制工作速率,以便在常规群集加载期间发生故障时不会干扰群集流量.

控制它的属性是dfs.namenode.replication.work.multiplier.per.iteration (2),dfs.namenode.replication.max-streams (2)dfs.namenode.replication.max-streams-hard-limit (4).最重要的是控制在每次发生的心跳时计划到DN的工作速率,另外两个进一步限制DataNode一次完成的最大并行线程网络传输.值中的值()表示其默认值.有关此内容的一些说明,请访问https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

您可以尝试将值集分别增加到(10,50,100)以增加网络使用率(需要重新启动NameNode),但请注意,由于更多块信息的存在,您的DN内存使用量可能略有增加传播到它.DN角色的这些值的合理堆大小约为4 GB.

Ps我个人在生产系统上没有尝试过这些值.您也不希望最大化重新复制工作负载,从而影响正常的群集工作,因为由于缺少网络资源,1/3副本的恢复可能比缺少作业/查询SLA的优先级低(除非您有真正快速的网络,即使在负载期间也总是未充分利用).尝试调整它直到你对结果满意为止.