【问题标题】:HDFS vs LFS - How Hadoop Dist. File System is built over local file system?HDFS 与 LFS - Hadoop Dist.文件系统是建立在本地文件系统之上的吗?
【发布时间】:2013-05-24 14:23:19
【问题描述】:

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

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

这是我的问题..

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

【问题讨论】:

    标签: hadoop


    【解决方案1】:

    好的..让我试一试..当您配置 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- 二级namenode存储其检查点的目录,默认值为${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

    【讨论】:

    • 这是一个令人信服的解释。如果 HDFS 是一种虚拟抽象手段,那么 Map Readuce 是另一个在 HDFS 之上工作的抽象,不是吗?
    • 它在 HDFS 之上工作,但不仅限于 HDFS。 MapReduce 是一个计算框架,可用于处理不仅存储在 HDFS 中的数据,还可以处理其他存储中的数据。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-28
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      相关资源
      最近更新 更多