2013-07-11 47 views
1

我目前正在重建具有我们区域服务器和数据节点的服务器。当我关闭一个数据节点时,10分钟后,它所拥有的数据块将在其他数据节点之间重新复制,正如它应该那样。我们有10个数据节点,所以我看到大量的网络流量,因为这些块正在被重新复制。但是,我看到每台服务器的流量仅为500-600mbps(机器都具有千兆接口),所以它绝对不是网络绑定的。我试图找出限制数据节点发送和接收块速度的原因。每个数据节点都有6个7200 rpm SATA驱动器,在此期间IO使用率非常低,只能达到每驱动器20-30%的峰值。 hdfs中是否有限制块的复制速度?HDFS中的块复制限制

回答

6

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。

P.s.这些价值观并非我个人在生产系统上尝试过的。您也不希望最大限度地减少重复复制工作量,因为它会影响常规集群工作,因为缺少网络资源,恢复1/3副本的优先级可能会低于丢失的作业/查询SLA的优先级(除非您有真正快速的网络,即使在负载期间也总是未充分利用)。试着调整它直到你对结果满意为止。