无法放置足够的副本:预期大小为1,但只能选择0种存储类型(复制= 1,选择= [],不可用= [DISK],已删除= [DISK],policy = BlockStoragePolicy
{HOT:7,storageTypes = [DISK],creationFallbacks = [],replicationFallbacks = [ARCHIVE]}
我们有一个场景,其中要写入多个hdfs文件(500-1000个文件的顺序-最多同时写入10-40个这样的文件)-我们不会在每次写入时立即在每个文件上调用close-但请继续写直到结束,然后再调用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,因此对于临时性故障,我们不会得到错误。但这似乎也无济于事。
这里还有其他建议吗?
答案 0 :(得分:0)
对于我来说,这是通过打开数据节点(在Docker上)的防火墙端口50010来解决的