hdfs会混淆本地节点上是否也存在相同的路径

z5btuh9x  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(295)

我使用的是cdh5.4.1集群提供的hadoop。我面临的问题是,hdfs上有一个目录,路径是/tmp/data,它有一些csv文件,比如.csv,现在这个文件夹也出现在节点的一个(比如节点1)本地linux fs上,并且包含一个csv文件xyz.csv。
当我从node1运行以下命令:hdfs dfs-ls/tmp/data/*.csv时,我希望输出显示.csv,但是我得到一个错误:ls:`/tmp/data/xyz.csv':没有这样的文件或目录在本地linux fs上没有相同文件夹路径的其他节点上运行时,同一命令会给出正确的输出。
我的理解是,由于我使用hdfs-dfs命令,hadoop应该只查看dfs空间,而不应与本地linux-fs混淆,但这似乎是不正确的。
请说明这种行为背后的原因是什么?

pgvzfuti

pgvzfuti1#

我的理解是,由于我使用hdfs dfs命令,hadoop应该只查看dfs空间,而不应与本地linux fs混淆
只有在正确设置hadoop客户机xml配置文件以使用 hdfs:// uri和not file:// 在core-site.xml中,默认值 fs.defaultFSfile:// 但是,应该在cdh或hdp管理的环境中正确设置此值

0kjbasz6

0kjbasz62#

在将参数传递给hdfs命令之前,您将看到bash(或您选择的任何shell)全局化和扩展通配符的效果。本地文件系统中有一个文件位于/tmp/data/xyz.csv。因此,真正被调用的命令是 hdfs dfs -ls /tmp/data/xyz.csv . 由于xyz.csv在hdfs集群中不存在,因此报告为“找不到文件”。
您可以通过将参数用单引号括起来来解决此问题,以防止全局扩展:

> # local file system
> ls /tmp/data/*.csv
/tmp/data/xyz.csv

> # attempting to check HDFS, but wildcard expansion happens before invoking command
> hdfs dfs -ls /tmp/data/*.csv
ls: `/tmp/data/xyz.csv': No such file or directory

> # wrap in single quotes to prevent globbing expansion
> hdfs dfs -ls '/tmp/data/*.csv'
-rw-r--r--   3 naurc001 supergroup          0 2017-02-02 11:52 /tmp/data/abc.csv

相关问题