【问题标题】:hadoop -appendToFile on Google Compute Engine clusterGoogle Compute Engine 集群上的 hadoop -appendToFile
【发布时间】:2015-01-31 02:11:46
【问题描述】:

我在 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 命令正在使用类似的语法。同样的命令也适用于其他集群。任何意见,将不胜感激。谢谢!

【问题讨论】:

  • 如果您使用 bdutil,DEFAULT_FS 的值是多少,或者 /home/hadoop/hadoop-install/conf/core-site.xml 中的 fs.default.name 的值是多少? (或者其他 ${HADOOP_HOME}/conf/core-site.xml 如果您没有使用 bdutil 或 Click-to-Deploy)?

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


【解决方案1】:

如果您碰巧正在运行默认的 bdutil 或 Click-to-Deploy 创建的具有 2 个数据节点的 Hadoop 集群,并且如果 @987654327 @ 仍然是默认值 3: HDFS-4600 HDFS file append failing in multinode cluster

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

【讨论】:

  • 非常感谢这个非常有效的答案!我只是在这里评论一下,我发现我需要将hadoop2_env.sh 中的UPLOAD_FILES+=("libexec/configure_mrv2_mem.py") 更改为UPLOAD_FILES+=(${BDUTIL_DIR}/libexec/configure_mrv2_mem.py) 以获取1.1.0 版本。否则,到目前为止它工作得很好。再次感谢!
  • 感谢您的报告!已在 github.com/GoogleCloudPlatform/bdutil/pull/12 (commit github.com/GoogleCloudPlatform/bdutil/commit/…) 中修复(另外针对 querytools 和 ambari)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多