【问题标题】:HDFS Block SplitHDFS 块拆分
【发布时间】:2015-08-02 06:14:07
【问题描述】:

我的 Hadoop 知识已经 4 周了。我正在使用带有 Hadoop 的沙箱。

根据理论,当一个文件被复制到 HDFS 文件系统中时,它会被分割成 128 MB 的块。然后将每个块复制到不同的数据节点,然后复制到数据节点。

问题:

  1. 当我将一个数据文件 (~500 MB) 从本地文件系统复制到 HDFS(put 命令)时,整个文件仍然存在于 HDFS(-ls 命令)中。我期待看到 128 MB 块。我在这里做错了什么?

  2. 如果假设,我设法在 HDFS 中拆分和分发数据文件,有没有办法将原始文件合并并检索回本地文件系统?

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:
    1. 您不会看到-ls 命令中的各个块。这些是未在 Linux 的 ls 或 Windows 资源管理器中显示的硬盘驱动器上的块的逻辑等价物。您可以像hdfs fsck /user/me/someFile.avro -files -blocks -locations 这样在命令行上执行此操作,或者您可以使用NameNode UI 查看哪些主机具有文件块,以及每个块在哪些主机上被复制。
    2. 当然。您只需执行hdfs dfs -get /user/me/someFile.avro 之类的操作或使用 HUE 或 NameNode UI 下载文件。所有这些选项都会将适当的块流式传输给您,以将逻辑文件重新组合在一起。

    【讨论】:

    • 谢谢基冈。这是否意味着如果我在一个数据节点的 HDFS 中创建一个目录,同一目录将在另一个数据节点中可用。在您的示例中 /user/me/someFile.avro 将在所有数据节点中看到(ls 命令)??
    • 您不会在单个节点上创建文件或文件夹。你告诉 HDFS 创建一个文件,它会在它认为合适的节点上创建文件。默认情况下,您的操作将在 3 个节点上复制(如果可能,至少有 1 个在单独的机架中)以进行故障转移。 HDFS 为您提供了一个逻辑文件系统,您作为最终用户不知道或控制数据的物理位置。这就是这个系统的美妙之处,它都为你抽象出来了。
    • @pradeep-krishnaraj,你也能接受这个答案吗?我正在努力提高我的声誉:)
    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多