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

Posted

技术标签:

【中文标题】Hadoop文件系统中目录的路径是啥?【英文标题】:What is the path to directory within Hadoop filesystem?Hadoop文件系统中目录的路径是什么? 【发布时间】:2013-11-12 19:52:28 【问题描述】:

最近我开始学习 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

地图

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

【问题讨论】:

【参考方案1】:

您对hadoop fs -ls 的第一次调用是一个相对目录列表,因为当前用户通常植根于HDFS 中名为/user/$user.name 的目录中。因此,您的 hadoop fs -ls 命令列出了与此位置相关的文件/目录 - 在您的情况下为 /user/Li/

您应该能够通过运行 aboolute 列表来断言这一点并确认内容/输出匹配:hadoop fs -ls /user/Li/

由于这些文件位于 HDFS 中,您将无法在本地文件系统上找到它们 - 它们作为块(用于真实文件)和元数据条目(用于文件和目录)分布在 NameNode 中的集群节点中.

【讨论】:

非常感谢您的解释。假设我在单节点(机器)上运行hadoop,由于架构的限制,我仍然无法访问HDFS,对吧? 您可以安装 FUSE 连接器或类似的东西,以允许您将 HDFS 挂载为文件系统,否则不能,不能直接挂载。您可以查询文件的 NameNode 元数据,发现块名称,然后在本地文件系统上查找块 您说“通常植根于名为 /user/$user.name 的目录中” - 如何配置?有什么办法可以pwd,以防我认为我在其他地方?或者我当前目录中的ls 文件结果是文件的绝对路径 @TheRedPea - 谷歌搜索你的问题让我回到我的另一个答案 - ***.com/questions/10069568/hdfs-home-directory。来源的答案和链接似乎仍然有效 @ChrisWhite 好的,“似乎是硬编码的”——我不确定我是否可以使用 ls 来获取这个绝对路径,但现在我知道它是硬编码的,我应该能够自己想办法。谢谢!【参考方案2】:

所有文件都存在于 hdfs 下,这是 Hadoop 分布式文件系统。 所以这些文件不存在于您的文件系统或目录结构中

在 hdfs 中,这些存储为

Path("hdfs://host:port/file"));

端口的设置存在于hadoop配置目录下的xml文件中 $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>

借助这个你可以创建 dir 删除文件或 dir 以及其他的东西

【讨论】:

以上是关于Hadoop文件系统中目录的路径是啥?的主要内容,如果未能解决你的问题,请参考以下文章

hadoop中怎么创建文件夹?

hadoop基本操作

错误消息“系统找不到指定的路径”的原因是啥?

Qt资源系统中前缀优于文件系统路径的优势是啥?

Linux里面hdfs作用是啥?

菜鸟求助阿!快疯了!Hadoop分布式系统下文件路径的问题