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文件系统中目录的路径是啥?的主要内容,如果未能解决你的问题,请参考以下文章