【问题标题】:When does file from local system is moved to HDFS本地系统的文件何时移动到 HDFS
【发布时间】:2018-05-11 19:07:21
【问题描述】:

我是 Hadoop 新手,如果我的问题很琐碎,请见谅。

  • 本地文件系统是否不同于 HDFS。
  • 在创建 mapreduce 程序时,我们使用 fileinputformat.addInputPath() 函数归档输入文件路径。它是否将该数据拆分为多个数据节点并执行输入拆分?如果是,这些数据将在数据节点中保留多长时间?我们可以将 mapreduce 程序写入 HDFS 中的现有数据吗?

【问题讨论】:

    标签: hadoop mapreduce hdfs


    【解决方案1】:

    1:HDFS其实是分布式存储的解决方案,本地化存储空间会有更多的存储上限和备份问题。 HDFS是服务器集群存储资源整体,通过nameNode存储目录和块信息管理,dataNode负责块存储容器。 HDFS可以看作是更高层次的抽象本地化存储,解决分布式存储的核心问题就可以理解了。

    2:如果我们使用hadoop fileinputformat,首先它创建一个open () 方法到filesystem 并连接到namenode 以获取位置消息将这些消息返回给客户端。然后创建一个fsdatainputstream 以从不同节点一一读取.. 最后关闭fsdatainputstream

    如果我们将数据放入客户端的 hdfs 数据将被拆分为多个数据并存储在不同的机器中(大于 128M [64M])
    数据持久化存储在硬盘上

    所以如果你的文件比普通服务器的压力大得多并且需要分布式计算,你可以使用 HDFS

    【讨论】:

      【解决方案2】:

      HDFS 不是您的本地文件系统 - 它是一个分布式文件系统。这意味着您的数据集可以大于集群中单台机器的最大存储容量。 HDFS 默认使用 64 MB 的块大小。每个块被复制到集群中的至少 3 个其他节点以解决冗余(例如节点故障)。因此,使用 HDFS,您可以将整个集群视为一个大型文件系统。

      当您编写 MapReduce 程序并设置输入路径时,它会尝试在 HDFS 上定位该路径。然后输入会自动分成所谓的输入拆分 - 包含来自输​​入文件的多条记录的固定大小的分区。为每个拆分创建一个Mapper。接下来,map 函数(由您定义)应用于每个拆分中的每条记录,生成的输出存储在运行map 函数的节点的本地文件系统中。然后Reducer 将此输出文件复制到其节点并应用reduce 函数。如果在执行map 时出现运行时错误并且任务失败,Hadoop 将在另一个节点上运行相同的映射器任务,并让 reducer 复制该输出。

      reducer 使用从所有 mapper 任务生成的输出,因此此时,reducer 并不关心馈送到 mapper 的输入拆分。

      【讨论】:

        【解决方案3】:

        根据问题对答案进行分组:

        HDFS 与本地文件系统

        是的,HDFS 和本地文件系统不同。 HDFS 是一个基于Java 的文件系统,它位于本机文件系统之上(如ext3)。它被设计成分布式的、可扩展的和容错的。

        数据节点保存数据多长时间?

        当数据被摄取到 HDFS 中时,它被分割成块,复制 3 次(默认情况下)并分布在整个集群数据节点中。这个过程都是自动完成的。这些数据将保留在数据节点中,直到被删除并最终从垃圾箱中清除。

        InputSplit 计算

        FileInputFormat.addInputPath() 指定 HDFS 文件或目录,应从中读取文件并将其发送到映射器进行处理。在达到这一点之前,数据应该已经在 HDFS 中可用,因为它现在正在尝试处理。因此,数据文件本身已被拆分为块并在整个数据节点中复制。文件、它们的块以及它们所在的节点的映射 - 这是由一个名为 NameNode 的主节点维护的。

        现在,基于此 API 指定的输入路径,Hadoop 将计算处理文件所需的 InputSplit 数量。 InputSplits 的计算是在工作开始时由MapReduce 框架完成的。然后每个 InputSplit 都由映射器处理。这一切都会在作业运行时自动发生。

        现有数据上的 MapReduce

        是的,MapReduce 程序可以在 HDFS 中的现有数据上运行。

        【讨论】:

          猜你喜欢
          • 2022-01-11
          • 2023-03-17
          • 1970-01-01
          • 2013-07-24
          • 1970-01-01
          • 2015-03-28
          • 1970-01-01
          • 2014-08-29
          相关资源
          最近更新 更多