我目前正在重建我们的服务器,其中包含我们的区域服务器和数据节点。当我取下一个数据节点时,10分钟后,它所拥有的数据块将在其他数据节点之间重新复制,这是应该的。我们有10个数据节点,所以我看到重复制数据块时网络流量很大。然而,我发现每台服务器的流量只有500-600mbps(所有的机器都有千兆接口),所以它绝对不受网络限制。我试图找出是什么限制了数据节点发送和接收数据块的速度。每个数据节点有六个7200 rpm sata驱动器,在此期间io使用率非常低,每个驱动器的io使用率仅达到20-30%。hdfs中是否有限制块复制速度的限制?
1条答案
按热度按时间9bfwbjaz1#
复制工作的速率由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内存使用率可能会略有增加。dn角色的这些值的合理堆大小约为4GB。
p、 这些价值观不是我个人在生产系统上尝试的。您也不希望最大限度地增加重新复制工作负载,从而影响常规群集工作,因为由于缺少网络资源,恢复1/3副本的优先级可能低于丢失的作业/查询SLA(除非您拥有一个非常快速的网络,即使在负载不足的时间段内,它也总是利用不足)。试着调整它直到你对结果满意为止。