zoukankan      html  css  js  c++  java
  • 文件压缩

     1、为什么对文件进行压缩?

      在Hadoop中,文件需要存储、传输、读取磁盘、写入磁盘等等操作,而文件的大小,直接决定了这些这些操作的速度。

    2、压缩的好处和坏处

    (1)好处:

      减少存储磁盘空间
      降低IO(网络的IO和磁盘的IO)
      加快数据在磁盘和网络中的传输速度,从而提高系统的处理速度

    (2)坏处:

      由于使用数据时,需要先将数据解压,加重CPU负荷。而且压缩的越狠,耗费的时间越多。

    3、mapreduce过程涉及到的文件压缩:

    1、第一次传入压缩文件,应选用可以切片的压缩方式,否则整个文件将只有一个Map执行。

      Use Compressd Map Input:从HDFS中读取文件进行Mapreuce作业,如果数据很大,可以使用压缩并且选择支持分片的压缩方式(Bzip2,LZO),可以实现并行处理,提高效率,减少磁盘读取时间,同时选择合适的存储格式例如Sequence Files,RC,ORC等。

    2、第二次压缩应选择压缩解压速度快的压缩方式,生产中,Map阶段数据落盘通常使用snappy压缩格式(快速压缩解压)。

      Compress Intermediate Data:Map输出作为Reducer的输入,需要经过shuffle这一过程,需要把数据读取到一个环形缓冲区,然后读取到本地磁盘,所以选择压缩可以减少了存储文件所占空间,提升了数据传输速率,建议使用压缩速度快的压缩方式,例如Snappy和LZO。

    3、第三次压缩有两种场景分别是:

    一、当输出文件为下一个job的输入,选择可切分的压缩方式例如:BZip2。

    二、当输出文件直接存到HDFS,作为归档,选择压缩比高的压缩方式。reduce阶段数据落盘通常使用gzip或bzip2进行压缩(减少磁盘使用)。Compress Reducer Output:进行归档处理或者链接Mapreduce的工作(该作业的输出作为下个作业的输入),压缩可以减少了存储文件所占空间,提升了数据传输速率,如果作为归档处理,可以采用高的压缩比(Gzip,Bzip2),如果作为下个作业的输入,考虑是否要分片进行选择。

    参考博客,各种压缩方式的对比:https://blog.csdn.net/liweihope/article/details/89672763

    压缩方式为 Snappy,特点速度快,缺点无法切分

  • 相关阅读:
    SpringBoot 部署【war】到服务器的tomcat
    SpringBoot 部署【jar】前后端分离(nginx)
    VM安装centos7
    nginx 入门
    《从零开始学习Mysql5.7》笔记
    架构师技术栈
    【读书笔记】小强升职记
    lambda 表达式
    【软考】信息资料
    flutter 获取状态栏高度
  • 原文地址:https://www.cnblogs.com/guoyu1/p/12218662.html
Copyright © 2011-2022 走看看