hadoop -appendToFile在Google Compute Engine集群上

时间:2015-01-30 14:36:53

标签: hadoop google-compute-engine google-cloud-platform

我无法在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 个答案:

答案 0 :(得分:2)

如果您碰巧运行默认的bdutil或Click-to-Deploy创建的带有2个数据节点的Hadoop集群,那么您可能会遇到一个显然会突然影响append命令的已知问题,如果dfs.replication的默认值仍为3HDFS-4600 HDFS file append failing in multinode cluster

在最近的bdutil release 1.1.0中,默认dfs.replication现在为2,因为默认设置已在永久磁盘上;复制2是一种权衡,允许Hadoop仍然具有更高的单节点故障可用性,而底层的持久磁盘提供了持久性。因此,如果您选择最新的更改和/或手动将dfs.replication设置为较低的数字,或者增加数据节点的数量,则追加应该开始工作。