vlambda博客
学习文章列表

HDFS中的磁盘和数据节点大小



该博客讨论了下面这些问题的答案,例如datanode中正确的磁盘大小是多少以及datanode中正确的容量是多少。
我们的一些客户询问我们有关使用高密度存储节点的信息。当然,可以将高密度节点用于归档存储,因为对于冷数据,IO带宽要求通常较低。但是,必须仔细评估将较高密度的节点用于热数据的决定,因为这可能会影响集群的性能。如果您已设置了足够的网络带宽来减轻较高的恢复时间并已对预期的工作量建模,则可以将更高密度的节点用于热数据。
选择节点容量时要记住两个因素。这些将在下一节中详细讨论。
  • 大磁盘–总节点容量相同,使用更多磁盘会更好,因为它会产生更高的总IO带宽。

  • 高密度节点–随着节点变得更高密度,节点故障后的恢复将花费更长的时间。

这些因素不是特定于HDFS的,而是会影响复制数据以实现冗余并为实时工作负载提供服务的任何分布式存储服务。
我们的建议是将数据节点的容量限制为100TB,至少使用8个磁盘。磁盘大小上限为100TB / 8 12TB。
该文章假定您对 HDFS架构 有所了解。

大容量对HDFS集群的影响

减少IO带宽
Hadoop集群依靠大规模的并行IO容量来支持数千个并发任务。假定一个大小为96TB的数据节点,让我们考虑两个磁盘大小– 8TB和16TB。一个具有8TB磁盘的数据节点将具有12个此类磁盘,而一个具有16TB磁盘的数据节点将具有6个磁盘。我们可以假设每个磁盘的平均读/写吞吐量为100MB / sec,主轴速度为7200 RPM。下表总结了每种配置的带宽和IOPS。

8TB 12 = 96TB
16TB 6 = 96TB
读/写吞吐量
1200 MB /秒
600 MB /秒
随机IOPS
2880
1440
Bit-rot检测需要更长的时间
每个数据节点在每个卷上运行一个卷扫描器,该扫描器扫描块中的bit-rot。默认扫描周期为3周,因此在3周内会检测到由于bit-rot而丢失的副本。由于卷扫描器与应用程序竞争磁盘资源,因此限制其磁盘带宽非常重要。配置dfs.block.scanner.volume.bytes.per.second 定义了卷扫描器每秒可扫描的字节数,默认为1MB /秒。给定的配置带宽为5MB /秒。
扫描12TB所需时间= 12TB / 5MBps 28天。
进一步增加磁盘大小将增加检测bit-rot所花费的时间。 
重量级块报告
较大的卷大小意味着卷的块报告中有大量块。这会影响集群性能,因为它会增加数据节点中的块报告生成时间,RPC有效负载和名称节点中的块报告处理时间。
下图表示由数据节点发送的块报告的生成、网络往返时间和处理时间。数据节点只有一个卷,并且通过增加该卷的块数来收集统计信息。所有这些指标随着磁盘中块数量的增加而增加。

高密度存储节点的影响

故障恢复需要更多时间
每当存储节点发生故障时,必须将存储在该节点上的块复制到集群中的其他节点上,以恢复数据冗余。恢复时间的大小与数据节点的大小成线性关系,而与集群中的节点数成反比。可以使用以下公式将所有其他因素考虑为恒定的恢复时间。
恢复时间=(c s)/n
其中c是常数,s是每个节点的已用容量,n是集群中存储节点的数量。
对于给定的集群容量, 如果节点容量增加一倍,则恢复时间将增加4倍。假设集群平衡,则如果节点数减半,则每个节点的使用率都会加倍。
恢复时间= (c 2s) / (n/2) = (4 c s)/n
变量s和n在其他存储解决方案中也具有相似的意义。因此,高密度的数据节点将对任何集群中的恢复时间产生类似的影响。
对Datanode停用的影响
在计划中的某个节点退役期间,其所有块都将重新复制到其他节点。高密度节点对数据节点停用时间的影响类似于其对故障数据节点恢复时间的影响。因此,对于给定的集群容量,如果数据节点的容量增加一倍,则退役时间将增加4倍。
HDFS-14854 实现了一些改进,这些改进将提高节点退役的性能。这些改进将在CDP的将来版本中提供。
作者: Lokesh Jain
原文链接:https://blog.cloudera.com/disk-and-datanode-size-in-hdfs/