我无法在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命令正在使用类似的语法。并且相同的命令适用于其他集群。任何意见,将不胜感激。谢谢!
答案 0 :(得分:2)
如果您碰巧运行默认的bdutil或Click-to-Deploy创建的带有2个数据节点的Hadoop集群,那么您可能会遇到一个显然会突然影响append
命令的已知问题,如果dfs.replication
的默认值仍为3
:HDFS-4600
HDFS file append failing in multinode cluster
在最近的bdutil
release 1.1.0中,默认dfs.replication现在为2
,因为默认设置已在永久磁盘上;复制2是一种权衡,允许Hadoop仍然具有更高的单节点故障可用性,而底层的持久磁盘提供了持久性。因此,如果您选择最新的更改和/或手动将dfs.replication
设置为较低的数字,或者增加数据节点的数量,则追加应该开始工作。