在hadoop中运行map reduce作业之后,结果是一个包含部分文件的目录。零件文件的数量取决于减速器的数量,可以达到几十个(在我的例子中是80个)。保留多个零件文件是否会影响将来map reduce操作的性能,是好是坏?采取额外的缩减步骤并合并所有零件是否会提高或降低进一步处理的速度?请仅参考map以减少性能问题。我不在乎以任何其他方式拆分或合并这些结果。
ckx4rj1h1#
这完全取决于下一个任务需要做什么。如果你有分析数据,并且每天输入80个文件(部分处理),那么如果下一个工作需要合并过去两年的数据,那么你就有一个巨大的性能问题。不过,如果你只有那80个,我就不会担心了。
w8f9ii692#
在部件目录上运行进一步的mapreduce操作对整体性能应该没有什么影响。原因是hadoop执行的第一步是根据大小拆分输入目录中的数据,并将拆分后的数据放到Map器上。由于它已经将数据分割成不同的块,因此分割一个文件和多个文件不会影响性能,通过网络传输的数据量应该大致相等,处理量和磁盘时间也应该相等。在某些退化情况下,零件文件的速度可能会较慢。例如,您有成千上万个零件文件,而不是一个大文件。我也能想到有很多零件文件会更快的情况。例如,如果您没有可拆分的文件(除非您使用特定的压缩方案,否则通常不是这种情况),那么您必须将1个大文件放在一个Map器上,因为它是不可拆分的,在这个Map器中,许多部分文件会像正常情况一样或多或少地分布。
2条答案
按热度按时间ckx4rj1h1#
这完全取决于下一个任务需要做什么。
如果你有分析数据,并且每天输入80个文件(部分处理),那么如果下一个工作需要合并过去两年的数据,那么你就有一个巨大的性能问题。
不过,如果你只有那80个,我就不会担心了。
w8f9ii692#
在部件目录上运行进一步的mapreduce操作对整体性能应该没有什么影响。
原因是hadoop执行的第一步是根据大小拆分输入目录中的数据,并将拆分后的数据放到Map器上。由于它已经将数据分割成不同的块,因此分割一个文件和多个文件不会影响性能,通过网络传输的数据量应该大致相等,处理量和磁盘时间也应该相等。
在某些退化情况下,零件文件的速度可能会较慢。例如,您有成千上万个零件文件,而不是一个大文件。我也能想到有很多零件文件会更快的情况。例如,如果您没有可拆分的文件(除非您使用特定的压缩方案,否则通常不是这种情况),那么您必须将1个大文件放在一个Map器上,因为它是不可拆分的,在这个Map器中,许多部分文件会像正常情况一样或多或少地分布。