我已经为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)
这个方法解决了我的问题.
| 归档时间: |
|
| 查看次数: |
25541 次 |
| 最近记录: |