6

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

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

这是我的问题..

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

4

2 回答 2

10

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

临时目录实际上有 3 个用途:

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

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 来执行此操作。

高温高压

于 2013-05-29T20:28:10.083 回答
0

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

于 2013-05-29T11:47:14.523 回答