在比较四中压缩方法之前,先来点干的,说一下在MapReduce的job中怎么使用压缩。

MapReduce的压缩分为map端输出内容的压缩和reduce端输出的压缩,配置很简单,只要在作业的conf中配置即可

        //配置压缩conf.setBoolean("mapred.out.compress", true);//配置map输出的压缩conf.setBoolean("mapred.output.compress", true); //配置reduce输出的压缩conf.setClass("mapred.ouput.compression.codec", BZip2Codec.class, CompressionCodec.class); //配置压缩格式,我这里选用的是bzip2

1 gzip压缩

优点:压缩率比较高,而且压缩/解压速度也比较快;hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样;有hadoop native库;大部分linux系统都自带gzip命令,使用方便。

缺点:不支持split。

应用场景:当每个文件压缩之后在130M以内的(1个块大小内),都可以考虑用gzip压缩格式。譬如说一天或者一个小时的日志压缩成一个gzip 文件,运行mapreduce程序的时候通过多个gzip文件达到并发。hive程序,streaming程序,和java写的mapreduce程序完 全和文本处理一样,压缩之后原来的程序不需要做任何修改。

2 lzo压缩

优点:压缩/解压速度也比较快,合理的压缩率;支持split,是hadoop中最流行的压缩格式;支持hadoop native库;可以在linux系统下安装lzop命令,使用方便。

缺点:压缩率比gzip要低一些;hadoop本身不支持,需要安装;在应用中对lzo格式的文件需要做一些特殊处理(为了支持split需要建索引,还需要指定inputformat为lzo格式)。

应用场景:一个很大的文本文件,压缩之后还大于200M以上的可以考虑,而且单个文件越大,lzo优点越越明显。

3 snappy压缩

优点:高速压缩速度和合理的压缩率;支持hadoop native库。

缺点:不支持split;压缩率比gzip要低;hadoop本身不支持,需要安装;linux系统下没有对应的命令。

应用场景:当mapreduce作业的map输出的数据比较大的时候,作为map到reduce的中间数据的压缩格式;或者作为一个mapreduce作业的输出和另外一个mapreduce作业的输入。

4 bzip2压缩

优点:支持split;具有很高的压缩率,比gzip压缩率都高;hadoop本身支持,但不支持native;在linux系统下自带bzip2命令,使用方便。

缺点:压缩/解压速度慢;不支持native。

应用场景:适合对速度要求不高,但需要较高的压缩率的时候,可以作为mapreduce作业的输出格式;或者输出之后的数据比较大,处理之后的数据 需要压缩存档减少磁盘空间并且以后数据用得比较少的情况;或者对单个很大的文本文件想压缩减少存储空间,同时又需要支持split,而且兼容之前的应用程 序(即应用程序不需要修改)的情况。

最后用一个表格比较上述4种压缩格式的特征(优缺点):

4种压缩格式的特征的比较

压缩格式 split native 压缩率 速度 是否hadoop自带 linux命令 换成压缩格式后,原来的应用程序是否要修改
gzip 很高 比较快 是,直接使用 和文本处理一样,不需要修改
lzo 比较高 很快 否,需要安装 需要建索引,还需要指定输入格式
snappy 比较高 很快 否,需要安装 没有 和文本处理一样,不需要修改
bzip2 最高 是,直接使用 和文本处理一样,不需要修改

转载于:https://www.cnblogs.com/6tian/p/4368795.html

hadoop中MapReduce中压缩的使用及4种压缩格式的特征的比较相关推荐

  1. Hadoop的Mapreduce中Mapper的key和Map的key的区别

    Hadoop的Mapreduce中Mapper的key和Map的key的区别 问题:我们知道Mapreduce 是以键值对的方式进行输入输出的,分为Mapper <k,v,k,v>和Red ...

  2. Hadoop在MapReduce中使用压缩详解

    Hadoop对于压缩格式的是透明识别,我们的MapReduce任务的执行是透明的,Hadoop能够自动为我们将压缩的文件解压,而不用我们去关心. AD:51CTO学院:IT精品课程在线看! Hadoo ...

  3. 怎样压缩照片?分享两种压缩照片小技巧

    怎样压缩照片的大小呢?不管是我们使用手机还是电脑,都会经常需要使用到图片,加上现在数码科技的进步,往往一部手机拍出来的照片就有十几兆那么大,当这些图片的数量多起来,我们存储图片会占据很大内存,发送图片 ...

  4. ​手机照片怎么压缩?这两种压缩方法了解一下

    手机里的照片怎么把它给压缩一下呢?大家在平时使用照片的时候可能没有察觉到什么,但是当我们被提示照片的内存太大去查看照片内容时才会发现,原来我们的照片内容这么大,手机拍出来就是几兆甚至是十几兆的内存,在 ...

  5. 关于几种压缩算法以及hadoop和hbase中的压缩配置说明

    Hadoop中常用的压缩算法有bzip2.gzip.lzo.snappy,其中lzo.snappy需要操作系统安装native库才可以支持 下面这张表,是比较官方一点的统计,不同的场合用不同的压缩算法 ...

  6. MapReduce中的压缩和解压缩

    在MR中,压缩是个可选项,是为了减少IO流次数 一.概述 压缩技术能够有效减少底层存储系统(HDFS)读写字节数.压缩提高了网络带宽和磁盘空间的效率.在运行MR程序时,I/O操作.网络数据传输. Sh ...

  7. Hadoop大数据——mapreduce中的Combiner/序列化/排序初步

    mapreduce中的Combiner (1)combiner是MR程序中Mapper和Reducer之外的一种组件 (2)combiner组件的父类就是Reducer (3)Combiner和red ...

  8. Hadoop学习笔记—11.MapReduce中的排序和分组

    Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...

  9. Hadoop中mapreduce作业日志是如何生成的

    摘要:本篇博客介绍了hadoop中mapreduce类型的作业日志是如何生成的.主要介绍日志生成的几个关键过程,不涉及过多细节性的内容. 本文分享自华为云社区<hadoop中mapreduce作 ...

最新文章

  1. 树链剖分——线段树区间合并bzoj染色
  2. html 地图 自动适应,Html显示地图
  3. sdut 3333 数据结构实验之栈与队列六:下一较大值(二)
  4. 面试官本拿求素数搞我,但被我优雅的“回击“了(素数筛)
  5. linux内核高分辨率定时器,64位Linux上的高分辨率定时器支持
  6. [Qt] 解决toggled无法触发setVisible
  7. appium java环境_Appium环境搭建(Windows版)
  8. 信息学奥赛一本通(1095:数1的个数)
  9. MySQL--自增列学习
  10. extjs_04_grid(弹出窗口amp;行编辑器 CRUD数据)
  11. Silverlight中使用MVVM(9)-绑定Enum类型数据
  12. Ubuntu中出现“Could not get lock /var/lib/dpkg/lock”的解决方法
  13. NIS 病毒库 更新 地址
  14. 防止订单重复提交的2种技术解决方案
  15. SpringBoot+SQLSERVER2000问题一
  16. sudo yum install glibc.i686 linux,yum安装glibc-devel.i686的问题经历
  17. moss2007安装部署历程 .
  18. 联想ghost重装系统_联想笔记本系统重装图文教程
  19. 使用telnet连接qq pop服务器拉取邮件
  20. 2022中级Android开发面试解答,当上项目经理才知道

热门文章

  1. 【剑指Offer】面试招聘题目2:重建二叉树
  2. WCF之元数据交换 (Metadata Exchange)
  3. htop 比top更好用的top
  4. 转:MySQL索引原理及慢查询优化
  5. Y Combinator
  6. 关于linux内存管理
  7. jQuery Mobile和PhoneGap混合开发
  8. 怎么用javascript进行拖拽
  9. Sqlserver2005 with as 实现分页以提高性能
  10. 算法--------------整数反转