1

在我的 Hadoop 流式处理工作的第一步,我的表现非常糟糕:在我看来,映射器从 S3 读取的速度约为 40KB/s - 50KB/s。

从 S3 读取约 100MB 的数据需要一个多小时

数据的存储方式:S3 存储桶中有数千个约 5-10KB 的 GZip 文件。

我最近解压了一个 100MB 样本数据集的所有文件,并将其作为单个 GZip 文件上传到同一个 S3 存储桶中,我的任务在 3 分钟内完成(与之前的 1 小时运行相比)

受到鼓舞,我解压了一个 2GB 样本数据集的所有文件,并将其作为单个 GZip 文件上传到同一个 S3 存储桶中,我的任务再次花费了 1 个多小时:之后我终止了任务

我没有玩过mapred.min.split.sizeand mapred.max.split.size,但我需要一些示例值来开始玩。

不过,从我在互联网上阅读的帖子来看,似乎使用 GZip 输入文件处理 Hadoop 流式任务的 GB 数据并不会因为从 S3 上读取它们而受到很多惩罚。

能否分享一下:

  1. 您存储在 S3 上的文件的“blob 大小”和
  2. 每个任务处理多少人,以及
  3. 处理这些需要多长时间?

我猜想调整mapred.min.split.sizeandmapred.max.split.size并保持上述 3 个值对 S3 的优化会在执行作业的时间上产生很大的变化。

4

1 回答 1

0

无法并行读取 gzip 文件。通过将所有文件连接成一个大文件并对其进行 gzip 压缩,您会产生瓶颈。通过以压缩文件大小大致相同、不小于 128Mb 且文件数量等于 Hadoop 集群上的 reducer 数量的方式连接和单独 gzip 文件,可以获得最佳性能。

于 2012-07-03T18:36:06.033 回答