无法放置足够的复制副本:预期大小为 1,但只能选择 0 种存储类型



无法放置足够的副本:预期大小为 1,但只能选择 0 种存储类型(复制 = 1、已选择=[]、不可用=[磁盘]、已删除=[磁盘]、策略=块存储策略

{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}

我们有一个场景,正在写入多个 hdfs 文件(顺序为 500-1000 个文件 - 最多同时写入 10-40 个此类文件(——我们不会在每次写入时立即调用每个文件关闭 - 但继续写入直到结束,然后调用关闭。

似乎有时我们会收到上述错误 - 并且写入失败。 我们已将 hdfs 重试设置为 10 - 但这似乎没有帮助。

我们还将dfs.datanode.handler.count增加到200 - 这确实有所帮助,但并非总是如此。 a( 增加dfs.datanode.handler.count会有帮助吗?即使同时写入 10 个.. b( 应该怎么做才能使我们不会在应用程序级别出现错误 - 因此Hadoop监控页面表明磁盘是健康的 - 但从警告消息来看,有时磁盘似乎不可用 - org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy:未能放置足够的副本,仍然需要1才能达到1(不可用存储=[DISK],存储策略=块存储策略

{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]} , newBlock=true( 所有必需的存储类型都不可用: 不可用存储=[磁盘], 存储策略=块存储策略

假设上述情况仅在我们发现磁盘故障时才发生 - 我们还尝试将dfs.client.block.write.replace-datanode-on-failure.enable设置为false,以便对于临时故障,我们不会收到错误。但这似乎也无济于事。

这里有什么进一步的建议吗?

在我的情况下,这是通过为数据节点打开防火墙端口 50010 来解决的(在 Docker 上(

最新更新