大数据生态圈中压缩的使用

1.前言

在时下大数据场景中,虽然现在的机器的性能好,节点多,但是不代表,我们的数据就不需要做任何的压缩就开始处理,所以我们还是会对数据做压缩处理的,本文会详细的介绍大数据中常见的压缩格式,以及常见压缩的对比,和使用场景;

2.常用压缩格式介绍及对比

2.1 常见压缩介绍

压缩格式 文件后缀
gzip .gz
bzip2 .bz2
LZO .lzo
Snappy .snappy

2.2 常用压缩格式对比

2.2.1 测试准备

为了让压缩的对比更加明显,这里我准备一些测试的内容

  • 机器环境性能
    • 8 core i7 CPU
    • 8GB memory
    • 64 bit CentOS
  • 1.4GB 数据

2.2.2 测试结果1(压缩率)

在这里插入图片描述

通过上图的压缩率结果来看 bzip2>gzip>lzo>lz4>snappy, bzip2 的压缩率是最高的

2.2.3 测试结果2( 压缩&解压缩 时间)

在这里插入图片描述

从上图可以看出来, 从压缩 解压缩的时间角度来看 snapy>lz4>lzo>gzip>bzip2

3. 结论总结

前面我们针对 常见的压缩格式,做了详细的 测试,包括从 压缩率压缩解压缩 两个方面来看,我们可以得出结论;

3.1 结论一

  • 从压缩率结果来看 bzip2>gzip>lzo>lz4>snappy
  • 从压缩 解压缩的时间角度来看 snapy>lz4>lzo>gzip>bzip2
  • 压缩率 和 压缩时间 刚好成反比

3.2 结论二(压缩的优缺点)

  • 优点
    • 使用压缩,可以减轻我们本地磁盘存储的压力
    • 可以让文件在网络传输节约时间
  • 缺点:
    • 压缩率越高, 对cpu的压力越大

4. 压缩的选用

我们知道了,压缩的优缺点之后,那么我们再大数据的应用场景中,如何针对不同的场景选用不同的压缩格式呢??
这里我们以MapReduce 举例说明

在这里插入图片描述

从上图 我们可以看出来,在MR应用中,主要在三个地方会用到数据压缩 source transformation sink 数据来源,中间计算 最后的输出,下面我们就针对这三个部分 来做对应的压缩选型

4.1 数据来源

针对数据来源的压缩,我们首先应该先 撇开压缩率和压缩时间 ,最应该先考虑 的是能不能被切片, 这意味着整个大数据计算中,能不能被并行计算,其次才是考虑 压缩率,因为存在网络传输的过程,所以,在 source 阶段 ,最优的 压缩的 bzip2

4.2 中间计算

对于 计算层面上来说,我们应该从 解压缩 这来考虑 选型, 因为 计算在中间过程中,我们不能耗费时间在 解压缩和压缩上 ,所以 中间计算上来看,我们应该考虑 Snappy LZO

4.3 输出存储

在最后的节点我们应该考虑 我们这里的数据,是直接保存在 文件系统,还是 作为 下一次的输入接着计算,但是无论 以上两种 的哪种情况,其实都是应该考虑,压缩率 高的作为我们的压缩格式,因为这样,可以减少服务器的磁盘压力,降低网络传输的时间,所以 可以使用bzip2

5.总结

以上是我对大数据生态圈中的压缩,做的总结,当然我们在 选择的时候,肯定是保持 存储 和计算 都能达到 最优的速度,所有在不同的场景,我们应该做出相应的牺牲来 换取 平衡…

猜你喜欢

转载自blog.csdn.net/weixin_40420525/article/details/84881625