在我的 Hadoop 流式处理工作的第一步,我的表现非常糟糕:在我看来,映射器从 S3 读取的速度约为 40KB/s - 50KB/s。
从 S3 读取约 100MB 的数据需要一个多小时!
数据的存储方式:S3 存储桶中有数千个约 5-10KB 的 GZip 文件。
我最近解压了一个 100MB 样本数据集的所有文件,并将其作为单个 GZip 文件上传到同一个 S3 存储桶中,我的任务在 3 分钟内完成(与之前的 1 小时运行相比)
受到鼓舞,我解压了一个 2GB 样本数据集的所有文件,并将其作为单个 GZip 文件上传到同一个 S3 存储桶中,我的任务再次花费了 1 个多小时:之后我终止了任务。
我没有玩过mapred.min.split.size
and mapred.max.split.size
,但我需要一些示例值来开始玩。
不过,从我在互联网上阅读的帖子来看,似乎使用 GZip 输入文件处理 Hadoop 流式任务的 GB 数据并不会因为从 S3 上读取它们而受到很多惩罚。
能否分享一下:
- 您存储在 S3 上的文件的“blob 大小”和
- 每个任务处理多少人,以及
- 处理这些需要多长时间?
我猜想调整mapred.min.split.size
andmapred.max.split.size
并保持上述 3 个值对 S3 的优化会在执行作业的时间上产生很大的变化。