【问题标题】:Storing a large file in hadoop HDFS?在hadoop HDFS中存储一个大文件?
【发布时间】:2017-03-28 08:02:22
【问题描述】:

我需要在 HDFS 上存储一个大约 10TB 的大文件。我需要了解的是 HDFS 将如何存储此文件。比如说,集群的复制因子是 3,我有一个 10 节点集群,每个节点上有超过 10 TB 的磁盘空间,即集群总容量超过 100 TB。

现在 HDFS 会随机选择三个节点并将文件存储在这三个节点上。所以这听起来很简单。请确认?

或者 HDFS 是否拆分文件 - 比如说分成 10 个拆分,每个拆分 1TB,然后将每个拆分存储在随机选择的 3 个节点上。拆分也是可能的,如果是,它是否是启用它的配置方面。 如果 HDFS 必须拆分二进制文件或文本文件 - 它是如何拆分的。只需按字节。

【问题讨论】:

  • 除非您要使用的格式是可拆分的,否则这是个坏主意。从 HDFS 的角度来看,这无关紧要,但对于 MapReduce,如果它不可拆分,则只有一个映射器能够处理所述文件。

标签: java hadoop mapreduce hdfs bigdata


【解决方案1】:

是的,它会拆分文件(默认为 128mb 块)。每个块将存储在 3 个随机节点上。因此,您将拥有 30TB 的数据,平均分布在 10 个节点上。

【讨论】:

  • 您能否添加更多关于如何完成拆分的详细信息 - 如果是字节再见字节或其他一些机制。为什么我需要知道这一点 - 如果我编写一个 map reduce 程序,hadoop 如何知道哪些数据位于哪个节点上,等等关于数据局部性。
  • 名称节点管理有关文件已拆分成的所有不同块的元数据,每个块在哪里(在哪个数据节点上)以及在哪里制作副本。可以配置块大小和复制因子。拆分文件由您用来将文件写入 HDFS 的客户端完成。如果单行大于块大​​小,则该行仍将被拆分并放置在两个块中。请参阅此链接,其中详细解释了它 - stackoverflow.com/questions/14291170/…
猜你喜欢
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多