hadoop fs -ls 结果 "no such file or directory"
hadoop fs -ls results in "no such file or directory"
我已经为 10 节点集群安装并配置了 Hadoop 2.5.2。 1 作为主节点,其他节点作为从节点。
我在执行 hadoop fs 命令时遇到问题。 hadoop fs -ls 命令在 HDFS URI 上运行良好。在没有 HDFS URI
的情况下使用时,它会给出消息 "ls: `.': No such file or directory"
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 文件。
这里有几件事在起作用;基于 "jarlib is referring to the HDFS file location",听起来您确实将 HDFS 路径设置为 fs.default.name
,这确实是典型设置。因此,当您键入 hadoop fs -ls
时,这确实是在尝试查看 HDFS 内部,除了它在您的 current working directory 中查找,它应该类似于 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
传递,它应该可以工作。
您看到的行为是预期的,让我解释一下您在使用 hadoop fs
命令时发生了什么。
命令的语法是这样的:hadoop fs -ls [path]
默认情况下,当你不为上述命令指定[path]
时,hadoop将路径扩展到hdfs中的/home/[username]
;其中 [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 方案。
WARN util.NativeCodeLoader:无法为您的应用程序加载 native-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
-------------------------------------------------------
这与缺少用户主目录有关。一旦我在 hdfs 下为登录用户创建了主目录,它就像一个魅力..
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/{loggedin user}
hdfs dfs -ls
这个方法解决了我的问题。
Hadoop中的用户目录是(在HDFS中)
/user/<your operational system user>
如果您收到此错误消息,可能是因为您尚未在 HDFS 中创建用户目录。
使用
hadoop fs -mkdir -p /user/<current o.p. user directory>
要查看您当前的操作系统用户,请使用:
id -un
hadoop fs -ls
它应该开始工作了...
我已经为 10 节点集群安装并配置了 Hadoop 2.5.2。 1 作为主节点,其他节点作为从节点。
我在执行 hadoop fs 命令时遇到问题。 hadoop fs -ls 命令在 HDFS URI 上运行良好。在没有 HDFS URI
的情况下使用时,它会给出消息 "ls: `.': No such file or directory"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 文件。
这里有几件事在起作用;基于 "jarlib is referring to the HDFS file location",听起来您确实将 HDFS 路径设置为 fs.default.name
,这确实是典型设置。因此,当您键入 hadoop fs -ls
时,这确实是在尝试查看 HDFS 内部,除了它在您的 current working directory 中查找,它应该类似于 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
传递,它应该可以工作。
您看到的行为是预期的,让我解释一下您在使用 hadoop fs
命令时发生了什么。
命令的语法是这样的:hadoop fs -ls [path]
默认情况下,当你不为上述命令指定[path]
时,hadoop将路径扩展到hdfs中的/home/[username]
;其中 [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 方案。
WARN util.NativeCodeLoader:无法为您的应用程序加载 native-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
-------------------------------------------------------
这与缺少用户主目录有关。一旦我在 hdfs 下为登录用户创建了主目录,它就像一个魅力..
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/{loggedin user}
hdfs dfs -ls
这个方法解决了我的问题。
Hadoop中的用户目录是(在HDFS中)
/user/<your operational system user>
如果您收到此错误消息,可能是因为您尚未在 HDFS 中创建用户目录。
使用
hadoop fs -mkdir -p /user/<current o.p. user directory>
要查看您当前的操作系统用户,请使用:
id -un
hadoop fs -ls
它应该开始工作了...