HDFS与LFS - Hadoop如何区分。文件系统是在本地文件系统上构建的吗?

时间:2013-05-29 10:53:07

标签: hadoop

从我读过的各种博客中,我理解HDFS是计算机中本地文件系统上存在的另一层。

我也安装了hadoop,但我无法理解本地文件系统中hdfs层的存在。

这是我的问题..

考虑我在伪分布式模式下安装hadoop。在安装过程中引擎盖下会发生什么?我在配置文件中添加了一个tmp.dir参数。当它尝试访问datanode时,是namenode守护程序与之对话的单个文件夹吗?

2 个答案:

答案 0 :(得分:8)

好的..我试一试。当你配置Hadoop时,它会在本地FS上放置一个虚拟FS,即HDFS。 HDFS以复制的方式将数据存储为块(类似于本地FS,但与之相比要大得多)。但是HDFS目录树或文件系统命名空间与本地FS的命名空间相同。当您开始将数据写入HDFS时,它最终会被写入本地FS,但您无法直接在那里看到它。

临时目录实际上有三个目的:

1- namenode存储其元数据的目录,默认值为${hadoop.tmp.dir}/dfs/name,可由dfs.name.dir明确指定。如果指定dfs.name.dir,则namenode metedata将存储在作为此属性的值给出的目录中。

2-存储HDFS数据块的目录,默认值为${hadoop.tmp.dir}/dfs/data,可由dfs.data.dir明确指定。如果指定dfs.data.dir,则HDFS数据将存储在作为此属性的值给出的目录中。

3-辅助名称节点存储其检查点的目录,默认值为${hadoop.tmp.dir}/dfs/namesecondary,可由fs.checkpoint.dir明确指定。

因此,最好使用一些适当的专用位置作为这些属性的值,以便进行更清洁的设置。

当需要访问特定数据块时,将搜索存储在dfs.name.dir目录中的元数据,并将特定数据节点上该块的位置返回给客户端(位于dfs.data.dir中的某个位置)本地FS上的目录)。然后客户端直接从那里读取数据(同样适用于写入)。

这里需要注意的一点是,HDFS不是物理FS。它是一个在本地FS上面的虚拟抽象,不能像本地FS一样浏览。您需要使用HDFS shell或HDFS webUI或可用的API来执行此操作。

HTH

答案 1 :(得分:0)

在伪分布式模式下安装hadoop时,所有HDFS守护程序namdenode,datanode和secondary name节点都在同一台机器上运行。您配置的临时目录是数据节点存储数据的位置。因此,从HDFS的角度来看,您的数据仍然存储在块中,并在多个文件系统级块上更大(和聚合)的块中读取。