【问题标题】:Input / Output error when using HDFS NFS Gateway使用 HDFS NFS 网关时出现输入/输出错误
【发布时间】:2019-11-05 06:40:28
【问题描述】:

尝试处理挂载的 HDFS NFS 网关中的文件时出现“输入/输出错误”。尽管在 Ambari 中有 set dfs.namenode.accesstime.precision=3600000。例如,做类似...

$ hdfs dfs -cat /hdfs/path/to/some/tsv/file | sed -e "s/$NULL_WITH_TAB/$TAB/g" | hadoop fs -put -f - /hdfs/path/to/some/tsv/file
$ echo -e "Lines containing null (expect zero): $(grep -c "\tnull\t" /nfs/hdfs/path/to/some/tsv/file)"

当尝试从 tsv 中删除空值时,然后根据 NFS 位置检查该 tsv 中的空值会引发错误,但我在许多其他地方看到它(再次,已经有 dfs.namenode.accesstime.precision=3600000 )。任何人有任何想法为什么会发生这种情况或调试建议?谁能解释一下这种情况下的“访问时间”到底是什么?

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

    来自关于apache hadoop的讨论mailing list

    我认为访问时间是指文件的 POSIX atime 属性,例如此处描述的“最后访问时间” (https://www.unixtutorial.org/atime-ctime-mtime-in-unix-filesystems)。虽然 HDFS 保持正确的修改时间 (mtime),这很重要、简单且便宜,但它只保留了对上次访问时间的非常低分辨率的感觉,这不太重要,而且监控和记录成本很高,如此处所述 (@ 987654323@) 和这里 (https://superuser.com/questions/464290/why-is-cat-not-changing-the-access-time)。

    但是,要获得符合标准的 NFS api,您必须提供时间,HDFS NFS 实现也是如此。但首先你必须配置它。 [...] 许多站点被建议通过将其设置为零来完全关闭它,以提高 HDFS 的整体性能。例如,请参见此处(https://community.hortonworks.com/articles/43861/scaling-the-hdfs-namenode-part-4-avoiding-performa.html,“不要让读取变为写入”部分)。因此,如果您的站点在 HDFS 中关闭了 atime,则需要重新打开以完全启用 NFS。或者,您可以维护如您参考的文档中所述,通过使用“noatime”选项安装 NFS 来实现最佳效率。

    [...] 在 /var/log 下检查,例如使用 find /var/log -name ‘*nfs3*’ -print

    【讨论】:

      猜你喜欢
      • 2016-06-24
      • 2018-08-12
      • 2020-08-10
      • 2022-01-05
      • 2014-08-12
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      相关资源
      最近更新 更多