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

szqfcxe2  于 2021-06-04  发布在  Hadoop
关注(0)|答案(5)|浏览(485)

我已经为10节点集群安装并配置了hadoop2.5.2。1作为主节点,其他节点作为slavenodes。
我在执行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:~$

然而,使用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:~$

由于这种行为,我在mapreduce程序中遇到异常。jarlib指的是hdfs文件位置,而我希望jarlib指的是hadoop节点上本地文件系统中存储的jar文件。

ivqmmu1c

ivqmmu1c1#

这里有几件事在起作用;基于“jarlib指的是hdfs文件位置”,听起来您确实将hdfs路径设置为 fs.default.name ,这确实是典型的设置。所以,当你打字的时候 hadoop fs -ls ,这确实是在尝试查找hdfs内部,除了查找您当前的工作目录,应该是 hdfs://101-master:50000/user/ubuntu . 不幸的是,这个错误消息有些混乱,因为它没有告诉您这一点 . 被解释为完整的路径。如果你 hadoop fs -mkdir /user/ubuntu 那么 hadoop fs -ls 应该开始工作了。
这个问题与你的“jarlib”问题无关;每当您想要引用显式存储在本地文件系统中的文件时,但是路径通过hadoop的 Path 解决方案,您只需添加 file:/// 强制hadoop引用本地文件系统。例如:

hadoop fs -ls file:///tmp

尝试将jar文件路径作为fille传递 file:///path/to/your/jarfile 它应该有用。

9rbhqvlz

9rbhqvlz2#

这与用户丢失的主目录有关。一旦我在hdfs下为登录用户创建了home目录,它就像一个魔咒。。

hdfs dfs -mkdir /user

hdfs dfs -mkdir /user/{loggedin user}

hdfs dfs -ls

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

baubqpgj

baubqpgj3#

你所看到的行为是意料之中的,让我来解释一下你工作时发生了什么 hadoop fs 命令。
命令的语法如下: hadoop fs -ls [path] 默认情况下,如果不指定 [path] 对于上面的命令,hadoop将路径扩展到 /home/[username] 在hdfs中;哪里 [username] 替换为执行命令的linux用户名。
因此,当您执行此命令时:

ubuntu@xad101-master:~$ hadoop fs -ls

你看到错误的原因是 ls: '.': No such file or directory 因为hadoop正在寻找这个路径 /home/ubuntu ,似乎hdfs中不存在此路径。
执行此命令的原因:

ubuntu@101-master:~$ hadoop fs -ls hdfs://101-master:50000/

正在工作,因为您已明确指定 [path] 是hdfs的根。您也可以使用以下方法执行相同的操作:

ubuntu@101-master:~$ hadoop fs -ls /

它会自动计算到hdfs的根。
希望,这能清除你在执行时看到的行为 hadoop fs -ls 命令。
因此,如果要指定本地文件系统路径,请使用 file:/// url方案。

sirbozc5

sirbozc54#

warn util.nativecodeloader:无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类
将使用.bashrc文件中的以下命令删除此错误:

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/native"

------------------------------------------------------
/usr/local/hadoop is location where hadoop is install
-------------------------------------------------------
t1qtbnec

t1qtbnec5#

hadoop中的用户目录是(在hdfs中)

/user/<your operational system user>

如果您收到此错误消息,可能是因为您尚未在hdfs中创建用户目录。
使用

hadoop fs -mkdir -p /user/<current o.p. user directory>

要查看您当前的操作系统用户,请使用:

id -un
``` `hadoop fs -ls` 它应该开始工作了。。。

相关问题