Google Compute Engine 集群上的 hadoop -appendToFile

hadoop -appendToFile on Google Compute Engine cluster

我在 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: Failed to close file /tmp/test/one.log. Lease recovery is in progress. Try again later." 其中 one.log 是 hdfs 上的现有文件,two.log 是本地文件系统上的现有文件。

另外:

hadoop fs -appendToFile two.log /tmp/test/one.log

产生许多以以下开头的错误:

java.io.IOException: 由于没有更多好的数据节点可供尝试,无法替换现有管道上的错误数据节点。

我不熟悉这些错误,我相信我的语法使用是正确的。我已经确认其他 hadoop 命令正在使用类似的语法。同样的命令也适用于其他集群。任何意见,将不胜感激。谢谢!

如果您碰巧是 运行 默认的 bdutil 或 Click-to-部署具有 2 个数据节点的已创建 Hadoop 集群,如果 dfs.replication 仍处于其默认值 3HDFS-4600 HDFS 文件追加在多节点集群中失败

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