

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon EMR 集群错误：Cannot replicate block, only managed to replicate to zero nodes.
<a name="enough-hdfs-space"></a>

错误：“Cannot replicate block, only managed to replicate to zero nodes.” 通常在集群没有足够的 HDFS 存储时发生。当您在集群中生成的数据多于 HDFS 中可以存储的数据时，会发生此错误。只有在集群运行时您才会看到此错误，因为当作业结束时，它会释放所使用的 HDFS 空间。

向集群提供的 HDFS 空间量取决于用作核心节点的 Amazon EC2 实例的数量和类型。任务节点不用于 HDFS 存储。每个 Amazon EC2 实例上的所有磁盘空间（包括连接的 EBS 存储卷）均可供 HDFS 使用。有关每种 EC2 实例类型的本地存储量的更多信息，请参阅《Amazon EC2 用户指南》**中的[实例类型和系列](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。

另一个会影响可用 HDFS 空间量的因素是重复因子，即为冗余数据存储在 HDFS 中的每个数据块的副本数量。重复因子会随着集群中的节点数量而增加：对于拥有 10 个或更多节点的集群，每个数据块有 3 个副本；对于拥有 4 个至 9 个节点的集群，每个数据块有 2 个副本；对于拥有 3 个或更少节点的集群，每个数据块有 1 个副本 (无冗余)。用 HDFS 的总可用空间除以重复因子。有些情况下，例如将节点数量从 9 增加到 10 时，重复因子的增大实际上会导致 HDFS 的可用空间量下降。

例如，拥有 10 个 m1.large 类型核心节点的集群会向 HDFS 提供 2833 GB 的空间 ((10 节点 X 每个节点 850 GB) /重复因子 3)。

如果您的集群占用空间超过了为 HDFS 提供的空间，您可以向集群添加额外核心节点；或使用数据压缩创建更多 HDFS 空间。如果您的集群可以停止和重启，您可以考虑使用更大 Amazon EC2 实例类型的核心节点。您还可以考虑调整重复因子。然而，应当注意，减小重复因子会降低 HDFS 数据的冗余程度以及集群从丢失或损坏的 HDFS 数据块中恢复的能力。