在gce hadoop集群上执行hadoop fs shell命令-appendtofile时遇到问题。我在gce集群上成功地使用了其他hadoop shell命令(例如,-cat,-put,-mv)。另外,我可以在不同的hadoop集群上使用-appendtofile。但是,我无法在gce hadoop集群上使用-appendtofile。我尝试过的语法:
hdfs dfs -appendToFile two.log /tmp/test/one.log
产量:
“appendtofile:无法关闭文件/tmp/test/one.log。正在恢复租约。稍后再试。”其中one.log是hdfs上的现有文件,而two.log是本地文件系统上的现有文件。
此外:
hadoop fs -appendToFile two.log /tmp/test/one.log
产生许多错误,首先是:
java.io.ioexception:无法替换现有管道上的坏数据节点,因为没有更多的好数据节点可供尝试。
我不熟悉这些错误,我相信我的语法用法是正确的。我已经确认其他hadoop命令也使用类似的语法。同样的命令也适用于其他集群。如有任何建议,将不胜感激。谢谢您!
1条答案
按热度按时间bxpogfeg1#
看来你可能遇到了一个已知的问题,显然影响了
append
如果您碰巧正在运行一个默认的bdutil,或者单击部署创建的hadoop集群和2个datanode,那么dfs.replication
仍为其默认值3
:hdfs-4600多节点群集中的hdfs文件追加失败在最近的一次
bdutil
在1.1.0版中,默认的dfs.replication现在是2
因为默认设置已经在永久磁盘上了;2的复制是一种折衷,它允许hadoop在单节点故障时仍然具有更高的可用性,而底层的持久磁盘提供了持久性。因此,如果您选择最新的更改和/或手动设置dfs.replication
如果要减少或增加数据节点的数量,append应该开始工作。