Hadoop文件系统中目录的路径是什么?

16

最近我开始学习Hadoop和Mahout。我想知道在Hadoop文件系统目录中查找目录的路径。

在hadoop-1.2.1/conf/core-site.xml中,我已经指定了:

<property>
  <name>hadoop.tmp.dir</name>
  <value>/Users/Li/File/Java/hdfstmp</value>
  <description>A base for other temporary directories.</description>
</property>
在Hadoop文件系统中,我有以下目录:
lis-macbook-pro:Java Li$ hadoop fs -ls
Found 4 items
drwxr-xr-x   - Li supergroup          0 2013-11-06 17:25 /user/Li/output
drwxr-xr-x   - Li supergroup          0 2013-11-06 17:24 /user/Li/temp
drwxr-xr-x   - Li supergroup          0 2013-11-06 14:50 /user/Li/tweets-seq
-rw-r--r--   1 Li supergroup    1979173 2013-11-05 15:50 /user/Li/u.data
现在,/user/Li/output目录在哪里?
我尝试过:
lis-macbook-pro:usr Li$ cd /user/Li/output
-bash: cd: /user/Li/output: No such file or directory

所以我认为/user/Li/output是一个相对路径,而不是绝对路径。

然后我在/Users/Li/File/Java/hdfstmp中搜索。有两个文件夹:

dfs

mapred

但我仍然无法在/Users/Li/File/Java/hdfstmp中找到/user/Li/output。

2个回答

14
您第一次运行的 hadoop fs -ls 是相对于当前用户的目录列表,通常在 HDFS 中以名为 /user/${user.name} 的目录为根目录。因此,您的 hadoop fs -ls 命令是相对于该位置列出文件/目录——在您的情况下是 /user/Li/
您可以通过运行绝对列表并确认内容/输出匹配来验证这一点:hadoop fs -ls /user/Li/ 由于这些文件在 HDFS 中,您将无法在本地文件系统中找到它们——它们被分布在集群节点上作为块(对于实际文件)和 NameNode 中的元数据条目(对于文件和目录)。

非常感谢您的解释。假设我在单节点(机器)上运行Hadoop,由于架构的限制,我仍然无法访问HDFS,对吗? - Li'
你可以安装FUSE连接器或类似的工具来允许你将HDFS挂载为文件系统,但除此之外,不能直接操作。你可以查询NameNode元数据以获取文件信息,发现块名称,然后在本地文件系统中找到这些块。 - Chris White
你说“通常根目录位于/user/${user.name}下”——如何进行配置?如果我不确定当前所在位置,有什么方法可以使用pwd命令吗?或者我能够使用ls命令列出当前目录下的文件及其绝对路径吗? - Nate Anderson
@TheRedPea - 通过谷歌搜索你的问题,我又回到了我的另一个答案 - https://dev59.com/JWLVa4cB1Zd3GeqPwnlV。该答案和链接仍然有效。 - Chris White
@ChrisWhite 好的,“似乎是硬编码”--我不确定是否可以使用ls获取此绝对路径,但既然我知道它是硬编码的,我应该能够自己找出路径。谢谢! - Nate Anderson

7
所有文件都存储在Hadoop分布式文件系统(hdfs)下,因此这些文件不在您的文件系统或目录结构中。
在hdfs中,这些文件被存储为:
Path("hdfs://host:port/file"));

端口设置位于您的xml文件中,在Hadoop的配置目录下$HADOOP_HOME/etc/hadoop/core-site.xml中。
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9010</value>
</property>

您可以使用命令行查看HDFS下的文件。
hdfs dfs -ls

基本的Linux命令可以从命令行运行。
hdfs dfs -<Command>

通过这个工具,您可以创建目录、删除文件或目录等其他操作。


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