我试图确定存储在S3中的文件的理想大小,该文件将用于EMR上的Hadoop作业。
目前,我有大约5-10的大文本文件。我担心将这些大型文件复制到HDFS以运行MapReduce作业的延迟。我可以选择让这些文件变小。
我知道当在S3作业中使用S3作为输入目录时,MapReduce文件是与HDFS并行复制的。但是,是使用单个线程将单个大文件复制到HDFS,还是将该文件作为多个部分并行复制?此外,Gzip压缩是否会影响复制多个部分中的单个文件?
发布于 2016-11-04 07:01:13
有两个因素需要考虑:
因此,在文件的大小和数量之间存在一个权衡。推荐的尺寸在以下几个地方列出:
亚马逊EMR常见问题建议:
如果使用GZIP,请将文件大小保持为1-2 GB,因为GZIP文件不能分割。
这意味着一个映射器(一个线程)负责从Amazon获取数据。由于单个线程仅限于在任何给定时间(吞吐量)从Amazon中提取多少数据,将整个文件从AmazonS3读取到映射程序的过程成为数据处理工作流中的瓶颈。另一方面,如果您的数据文件可以拆分,多个映射程序可以处理您的文件。这样的数据文件的合适大小是在2GB到4GB之间。
其主要目标是通过并行处理尽可能多的文件来保持所有节点的忙碌,而不引入太多的开销。
继续使用压缩。节省的磁盘空间和数据传输时间使它比启用分裂更有利。
https://stackoverflow.com/questions/40416440
复制相似问题