hadoop fs -ls导致"没有这样的文件或目录"

Tar*_*riq 22 hadoop uri hdfs

我已经为10节点集群安装并配置了Hadoop 2.5.2.1充当masternode,其他节点充当slavenode.

我在执行hadoop fs命令时遇到问题.hadoop fs -ls命令可以正常使用HDFS URI.它在没有HDFS URI的情况下使用时给出消息"ls:`.':没有这样的文件或目录"

ubuntu@101-master:~$ hadoop fs -ls
15/01/30 17:03:49 WARN util.NativeCodeLoader: Unable to load native-hadoop 
ibrary for your platform... using builtin-java classes where applicable
ls: `.': No such file or directory
ubuntu@101-master:~$ 
Run Code Online (Sandbox Code Playgroud)

然而,使用HDFS URI执行相同的命令

ubuntu@101-master:~$ hadoop fs -ls hdfs://101-master:50000/
15/01/30 17:14:31 WARN util.NativeCodeLoader: Unable to load native-hadoop      
library for your platform... using builtin-java classes where applicable
Found 3 items
drwxr-xr-x   - ubuntu supergroup          0 2015-01-28 12:07 hdfs://101-master:50000/hvision-data
-rw-r--r--   2 ubuntu supergroup   15512587 2015-01-28 11:50 hdfs://101-master:50000/testimage.seq
 drwxr-xr-x   - ubuntu supergroup          0 2015-01-30 17:03 hdfs://101-master:50000/wrodcount-in
 ubuntu@101-master:~$ 
Run Code Online (Sandbox Code Playgroud)

由于这种行为,我在MapReduce程序中遇到异常.jarlib指的是HDFS文件位置,而我希望jarlib引用存储在Hadoop节点上的本地文件系统中的jar文件.

Ash*_*ith 54

您所看到的行为是预期的,让我解释一下您在使用hadoop fs命令时会发生什么.

命令的语法是这样的: hadoop fs -ls [path]

默认情况下,当您未指定[path]上述命令时,hadoop会将路径扩展为/home/[username]hdfs; 在哪里[username]被执行命令的linux用户名替换.

因此,当您执行此命令时:

ubuntu@xad101-master:~$ hadoop fs -ls
Run Code Online (Sandbox Code Playgroud)

你看到错误的原因是ls: '.': No such file or directory因为hadoop正在寻找这条路径/home/ubuntu,好像这条路径在hdfs中不存在.

之所以这个命令:

ubuntu@101-master:~$ hadoop fs -ls hdfs://101-master:50000/
Run Code Online (Sandbox Code Playgroud)

正在工作,因为,您已明确指定[path]并且是hdfs的根.你也可以这样做:

ubuntu@101-master:~$ hadoop fs -ls /
Run Code Online (Sandbox Code Playgroud)

它自动被评估到hdfs的根目录.

希望,这会清除您在执行hadoop fs -ls命令时看到的行为.

因此,如果要指定本地文件系统路径,请使用file:///url方案.


Kri*_*ula 10

这与用户缺少的主目录有关.一旦我在登录用户的hdfs下创建了主目录,它就像魅力一样......

hdfs dfs -mkdir /user

hdfs dfs -mkdir /user/{loggedin user}

hdfs dfs -ls
Run Code Online (Sandbox Code Playgroud)

这个方法解决了我的问题.