如何在我的系统中找到Hadoop hdfs目录?

13
如何在我的系统上找到Hadoop HDFS目录?我需要这个来运行以下命令 -
hadoop dfs -copyFromLocal <local-dir> <hdfs-dir>

在这个命令中,我不知道我的HDFS目录。

不确定是否有帮助,但我运行了以下命令并得到了这个输出 -

 hdfs dfs -ls
-rw-r--r--   3 popeye hdfs  127162942 2016-04-01 19:47 .

我在hdfs-site.xml中发现了以下条目 -

<property>
      <name>dfs.datanode.data.dir</name>
      <value>/hadoop/hdfs/data</value>
      <final>true</final>
</property>

我尝试运行以下命令,但出现错误 -

[root@sandbox try]# hdfs dfs -copyFromLocal 1987.csv /hadoop/hdfs/data
copyFromLocal: `/hadoop/hdfs/data': No such file or directory

提醒您 - 我正在 Azure 服务器上的 Hortonworks 沙盒中进行所有操作。

4个回答

16

你的意思是我应该尝试复制文件到Popeye目录中吗? - Popeye
我使用了"hdfs dfs -ls /"命令,并且成功将文件复制到该命令所列出的目录中。 - Popeye

2
如果你运行:
hdfs dfs -copyFromLocal foo.txt bar.txt

如果执行以下命令:

hdfs dfs -put foo.txt /user/popeye/bar.txt

那么本地文件foo.txt将被复制到您自己的HDFS目录/user/popeye/bar.txt中(其中popeye是您的用户名)。因此,以下操作也可以实现相同的效果:

hdfs dfs -copyFromLocal foo.txt /user/popeye/bar.txt

在将任何文件复制到HDFS之前,请确保首先创建父目录。您不必将文件放在此“主目录”中,但是(1)最好不要使用各种文件混杂的“ /”,并且(2)遵循此约定将有助于防止与其他用户发生冲突。

1
根据第一个答案,我将详细阐述有关 Hadoop 1.x 的内容 -
假设您正在伪分布式模型上运行此脚本,则可能会得到一个或两个用户列表(NameNodes)的说明 -
在我们的完全分布式模型中,首先您需要管理员权限才能执行这些操作,并且将有 N 个 NameNodes(用户)列表。
现在我们转到重点 -
首先到达您的Hadoop主目录,然后从那里运行此脚本 -
bin/hadoop fs -ls /

结果将会像这样 -
drwxr-xr-x   - xuiob78126arif supergroup          0 2017-11-30 11:20 /user

所以这里xuiob78126arif是我的名称节点(master/user),而NameNode(user)目录是 -

/user/xuiob78126arif/

现在你可以打开浏览器并搜索这个地址 -

http://xuiob78126arif:50070

从那里你可以获得集群摘要、NameNode存储等内容。

注意:只有在DataNode中存在至少一个文件或目录的情况下,脚本才会提供结果,否则您将会得到“-”。

ls: Cannot access .: No such file or directory.

所以,在这种情况下,您需要首先使用bin / hadoop fs-put&lt;源文件完整路径>将任何文件放置。
然后运行bin / hadoop fs-ls /脚本。
现在我希望您能对您的问题有所了解,谢谢。

0

定位HDFS目录并确保您深入到安装hadoop的目录。如果bin/hadoop fs -ls /没有显示任何输出,则意味着“/”是hdfs目录。使用mkdir为map-reduce作业创建一个新目录[例如:hdfs fs -mkdir /user/<local_username>]。之后,put或copyfromLocal命令将起作用。

我通过艰难的方式学会了这一点。我希望像我一样被卡住的人能从中受益。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接