当我使用hadoop fs -mkdir时,我的文件(dir)存储在哪里?

时间:2012-07-30 03:03:25

标签: hadoop hdfs

我对hadoop完全不熟悉,刚刚完成安装,花了我2​​天...... 我现在正在尝试使用hadoop dfs命令,但我无法理解它,虽然我已经浏览了几天,但我无法找到我想知道的答案。 所有的例子都显示了结果应该是什么,没有解释它的真实结构,所以如果有人能帮助我理解hadoop hdfs,我会很高兴。

我在HDFS上创建了一个目录。

bin/hadoop fs -mkdir input

好的,我将使用ls命令检查它。

bin/hadoop fs -ls
Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2012-07-30 11:08 input

好的,没问题,一切看起来都很完美..但实际上HDFS数据存储在哪里? 我以为它会存储在我的datanode目录(/ home / hadoop / datastore)中,该目录在hadoop.tmp.dir下的core-site.xml中定义,但它不在那里..

然后我尝试通过WEB-UI查看,我发现“input”是在“/ user / hadoop /”(/ user / hadoop / input)下创建的。

我的问题是

  • (1)datanode目录(hadoop.tmp.dir)用于什么,因为它不存储我通过dfs命令处理的所有内容?
  • (2)使用dfs命令创建的所有内容都转到/ user / XXX /,如何更改它的值?
  • (3)当我尝试通过普通的linux命令(ls / user / hadoop)访问时,我看不到任何内容。 / user / hadoop逻辑上存在吗?

如果我的问题很愚蠢,我很抱歉。 一个新手努力理解hadoop更好..

提前谢谢。

1 个答案:

答案 0 :(得分:11)

Hdfs 不是posix文件系统,您必须使用hadoop api来读取和查看此文件系统。这就是你必须做 hadoop fs -ls 的原因,因为你在这里使用hadoop API来读取文件。 hdfs中的数据存储在块中,并存储在所有数据节点中。有关此文件系统的元数据存储在Namenode上。您在目录“/ home / hadoop / datastore”中看到的数据文件是存储在单个数据节点上的块。

我认为您应该在其教程中探索有关其文件系统的更多信息。 Yahoo, YDN tutorial on hdfs