以下内容已在Microsoft的白皮书中记录:
如果输入源文件非常大(例如,超过500 GB)并且您希望针对相同的输入数据重复运行MapReduce作业,压缩将有所帮助。
因此,如果输入文件非常大,我们应该使用压缩 ,因为它可以节省磁盘I / O和网络带宽。
但是,我无法理解“对相同的输入数据重复运行MapReduce作业”将如何帮助压缩和解压缩的性能?即使每次数据都不同,压缩也应具有相同的性能。
答案 0 :(得分:0)
我认为这取决于使用什么样的压缩逻辑来压缩文件。以下是我在互联网上找到的信息。
文件压缩带来两大好处: 一个。它减少了存储文件所需的空间, 湾它可以加速网络上或磁盘上的数据传输。在处理大量数据时,这些节省都很大,因此仔细考虑如何在Hadoop中使用压缩是值得的。
压缩的原因: a)数据主要是存储的,而不是经常处理的。这是通常的DWH场景。在这种情况下,节省空间可能比处理开销更重要 b)压缩系数非常高,因此我们节省了大量的IO。 c)减压速度非常快(如Snappy),因此我们可以获得一些收益并且价格不高 d)数据已经压缩
不压缩的原因:
a)压缩数据不可拆分。必须注意的是,许多现代格式都是使用块级压缩构建的,以实现文件的拆分和其他部分处理。 b)在集群中创建数据,压缩需要很长时间。必须注意的是,压缩通常比解压缩更加耗费CPU。
所有压缩算法都表现出空间/时间权衡:更快的压缩和解压缩速度通常以节省更少的空间为代价。意思是,更快的压缩(就时间而言)意味着文件相对更大(对空间没有多大好处)。较慢的压缩意味着,压缩文件非常小。 2.通用输入格式