我有一个 5 TB 的数据,组合集群的整个大小的实际大小是 7 TB,我将复制因子设置为 2。
在这种情况下,它将如何复制数据?
由于复制因素,集群(节点)上存储的最小大小应该始终是数据大小的两倍,您认为这是 Hadoop 的一个缺点吗?
我有一个 5 TB 的数据,组合集群的整个大小的实际大小是 7 TB,我将复制因子设置为 2。
在这种情况下,它将如何复制数据?
由于复制因素,集群(节点)上存储的最小大小应该始终是数据大小的两倍,您认为这是 Hadoop 的一个缺点吗?
如果集群上的最小存储大小不是数据大小的两倍,那么您最终会得到复制不足的块。复制不足的块是复制<复制因子的块,因此如果复制因子为 2,则块的复制因子为 1。
复制数据根本不是 Hadoop 的缺点,事实上它是 Hadoop 有效的一个组成部分。它不仅为您提供了良好的容错能力,而且还有助于在靠近数据的地方运行地图任务,以避免在网络上增加额外的负载(阅读数据局部性)。
考虑到集群中的一个节点出现故障。该节点将存储一些数据,如果您不复制数据,则由于节点故障,您的部分数据将不可用。但是,如果您的数据被复制,则您仍然可以从其他节点访问发生故障的节点上的数据。
如果您觉得不需要复制数据,您始终可以将复制因子设置为 1。
数据复制不是 Hadoop 的缺点——它是提高 Hadoop (HDFS) 效率的因素。将数据复制到大量从属节点为集群提供了高可用性和良好的容错能力。如果我们考虑由于集群中的节点停机而给客户端造成的损失(通常会以数百万美元为单位),那么购买复制数据所需的额外存储设施所花费的成本要少得多。所以数据的复制是有道理的。
这是复制不足的情况。假设你有 5 个块。由于空间限制,HDFS 只能为前 3 个块创建副本。现在其他两个块正在复制中。当 HDFS 找到足够的空间时,它也会尝试复制这 2 个块。