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

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

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

似乎有时我们会遇到上述错误-并且写入失败。我们将hdfs重试设置为10-但这似乎无济于事。

我们也将dfs.datanode.handler.count增加到200-有时有所帮助,但并非总是如此。
a)增加dfs.datanode.handler.count在这里有帮助吗?即使同时写入10个。
b)应该做些什么,以确保我们不会在应用程序级别出现错误-就像这样的hadoop监视页面指示磁盘运行状况良好-但从警告消息来看,似乎磁盘有时不可用-org.apache .hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy:无法放置足够多的副本,仍然需要1才能达到1(unavailableStorages = [DISK],storagePolicy = BlockStoragePolicy

{HOT:7,storageTypes = [DISK],creationFallbacks = [],replicationFallbacks = [ARCHIVE]}
,newBlock = true)所有必需的存储类型都不可用:unavailableStorages = [DISK],storagePolicy = BlockStoragePolicy

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

这里还有其他建议吗?

最佳答案

就我而言,这是通过打开数据节点的防火墙端口50010(在Docker上)来解决的

关于hadoop - 无法放置足够的副本:预期大小为1,但只能选择0个存储类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52809233/

10-12 22:54