emr上hadoop作业的s3文件的最佳文件大小?

wwwo4jvm  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(340)

我正在尝试确定存储在s3中的文件的理想大小,该文件将用于emr上的hadoop作业。
目前我有大约5-10gb的大文本文件。我担心将这些大文件复制到hdfs以运行mapreduce作业的延迟。我可以选择把这些文件缩小。
我知道在mapreduce作业中使用s3作为输入目录时,s3文件会与hdfs并行复制。但是,单个大文件是使用单线程复制到hdfs,还是将此文件作为多个部分并行复制?此外,gzip压缩是否会影响将单个文件复制到多个部分?

du7egjpx

du7egjpx1#

有两个因素需要考虑:
压缩文件不能在任务之间分割。例如,如果您有一个大的压缩输入文件,则只有一个Map程序可以读取它。
使用更多、更小的文件使并行处理更容易,但在为每个文件启动map/reduce作业时,开销更大。所以,文件越少速度越快。
因此,需要在文件的大小和数量之间进行权衡。建议的尺寸列在几个地方:
amazon emr faq建议:
如果您使用的是gzip,请将文件大小保持在1–2GB,因为gzip文件无法分割。
amazon emr白皮书的最佳实践建议:
这意味着一个Map器(一个线程)负责从amazons3获取数据。由于单个线程仅限于在任何给定时间(吞吐量)从amazons3提取多少数据,因此将整个文件从amazons3读入Map器的过程将成为数据处理工作流中的瓶颈。另一方面,如果可以拆分数据文件,则多个Map器可以处理您的文件。此类数据文件的合适大小介于2 gb和4 gb之间。
主要目标是通过并行处理尽可能多的文件来保持所有节点繁忙,而不会引入太多开销。
哦,继续压缩。节省磁盘空间和数据传输时间使其比启用拆分更为有利。

相关问题