gpt4 book ai didi

hadoop - HDFS(序列文件)中的单个大文件或多个小文件?

转载 作者:可可西里 更新时间:2023-11-01 16:24:43 25 4
gpt4 key购买 nike

目前我正在使用 Sequence File 来压缩我们现有的 HDFS 数据。

现在我有两个选项可以将这个序列文件存储为

  • 单个大文件,这意味着所有记录都转到这个文件。
  • 多个小文件,每个文件的大小与HDFS block 大小(128MB)完全匹配

众所周知,HDFS 文件存储为 block ,每个 block 都到一个映射器。所以我认为当 MR 处理序列文件时没有什么不同。

我知道选项二的唯一缺点是名称节点需要更多开销来维护这些文件,而选项一只有一个文件。

我对这两个选项感到困惑,因为我看到太多文章推荐了

  • 尽可能使您的 HDFS 文件大小与 block 大小匹配。
  • 尽可能将小文件合并为一个大文件。

任何人都可以指出正确的方法吗?哪个更好?这两个选项有什么优点/缺点?谢谢!

最佳答案

Quora.com有一个问题(对于旧版本,因为 128MB 现在是默认 block 大小)为什么选择 64MB 作为默认 block 大小,虽然问题相对不同,但 Ted Dunning 的回答也回答了你的问题。泰德·邓宁写道:

Hadoop 选择 64MB 的原因是因为 Google 选择了 64MB。 Google 选择 64MB 的原因是因为金发姑娘的争论。

  1. 具有更小的 block 大小会导致查找开销增加。
  2. 具有适度较小的 block 大小使得 map task 运行得足够快,调度它们的成本变得相当到运行它们的成本。
  3. 有一个明显更大的 block 大小开始减少可用的读取并行度,并且最终可能会难以安排任务的本地任务。

所以我认为第 2 点和第 3 点已经为您提供了答案,现在您必须根据您的要求来决定是将文件存储为一个大文件还是存储为 128MB 的较小块(是的,如果您也可以增加 block 大小,如果您想要)。

关于hadoop - HDFS(序列文件)中的单个大文件或多个小文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42735641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com