https://www.jianshu.com/p/b50bc3f8819c

4种常用压缩格式在Hadoop中的应用

目前在Hadoop中用得比较多的有lzo,gzip,snappy,bzip2这4种压缩格式,笔者根据实践经验介绍一下这4种压缩格式的优缺点和应用场景,以便大家在实践中根据实际情况选择不同的压缩格式。

1.gzip压缩

  • 优点:

    1. 压缩率比较高,而且压缩/解压速度也比较快;
    2. hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样;
    3. 有hadoop native库;
    4. 大部分linux系统都自带gzip命令,使用方便。
  • 缺点:不支持split。
  • 应用场景:
    1. 当每个文件压缩之后在130M以内的(1个块大小内),都可以考虑用gzip压缩格式。譬如说一天或者一个小时的日志压缩成一个gzip文件,运行mapreduce程序的时候通过多个gzip文件达到并发。
    2. hive程序,streaming程序,和java写的mapreduce程序完全和文本处理一样,压缩之后原来的程序不需要做任何修改。

2.lzo压缩

  • 优点:

    1. 压缩/解压速度也比较快,合理的压缩率;
    2. 支持split,是hadoop中最流行的压缩格式;
    3. 支持hadoop native库;
    4. 可以在linux系统下安装lzop命令,使用方便。
  • 缺点:
    1. 压缩率比gzip要低一些;
    2. hadoop本身不支持,需要安装;
    3. 在应用中对lzo格式的文件需要做一些特殊处理(为了支持split需要建索引,还需要指定inputformat为lzo格式)。
  • 应用场景:
    一个很大的文本文件,压缩之后还大于200M以上的可以考虑,而且单个文件越大,lzo优点越明显。

3.snappy压缩

  • 优点:

    1. 高速压缩速度和合理的压缩率;
    2. 支持hadoop native库。
  • 缺点:
    1. 不支持split;
    2. 压缩率比gzip要低;
    3. hadoop本身不支持,需要安装;
    4. linux系统下没有对应的命令。
  • 应用场景:
    1. 当mapreduce作业的map输出的数据比较大的时候,作为map到reduce的中间数据的压缩格式;
    2. 或者作为一个mapreduce作业的输出和另外一个mapreduce作业的输入。

4.bzip2压缩

  • 优点:

    1. 支持split;
    2. 具有很高的压缩率,比gzip压缩率都高;
    3. hadoop本身支持,但不支持native;
    4. 在linux系统下自带bzip2命令,使用方便。
  • 缺点:
    1. 压缩/解压速度慢;
    2. 不支持native。
  • 应用场景:
    1. 适合对速度要求不高,但需要较高的压缩率的时候,可以作为mapreduce作业的输出格式;
    2. 或者输出之后的数据比较大,处理之后的数据需要压缩存档减少磁盘空间并且以后数据用得比较少的情况;
    3. 或者对单个很大的文本文件想压缩减少存储空间,同时又需要支持split,而且兼容之前的应用程序(即应用程序不需要修改)的情况。

HDFS的数据压缩格式相关推荐

  1. HADOOP与HDFS数据压缩格式

    HADOOP与HDFS数据压缩格式 1.cloudera 数据压缩的一般准则 一般准则 是否压缩数据以及使用何种压缩格式对性能具有重要的影响.在数据压缩上,需要考虑的最重要的两个方面是 MapRedu ...

  2. Hive 的数据压缩格式怎么选择?

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

  3. Hive 数据压缩格式总结

    精选30+云产品,助力企业轻松上云!>>> Hive 建设离线数据仓库通常符合:一次写入,多次读取.所以需要我们在建表的时候选择恰当的存储格式和数据的压缩模式. 先看几个 Hive ...

  4. 【Flink 实战系列】Flink SQL 使用 filesystem connector 同步 Kafka 数据到 HDFS(parquet 格式 + snappy 压缩)

    Flink SQL 同步 Kafka 数据到 HDFS(parquet + snappy) 在上一篇文章中,我们用 datastream API 实现了从 Kafka 读取数据写到 HDFS 并且用 ...

  5. HDFS 基础部分详解

    精选30+云产品,助力企业轻松上云!>>> 上一篇文章 Hadoop 系列之 1.0和2.0架构 中,提到了 Google 的三驾马车,关于分布式存储,计算以及列式存储的论文,分别对 ...

  6. HDFS restful API:关于WebHDFS与HttpFS的区别

    简介 两者都是基于REST的HDFS API,使得一个集群外的host可以不用安装HADOOP和JAVA环境就可以对集群内的HADOOP进行访问,并且client不受语言的限制. WebHDFS是HD ...

  7. 常用的数据交换格式有哪些_大数据架构之数据交换平台

    首先轻松一下: 学校门前,一名家长趁摊主正忙,把一瓶奶茶暗暗塞给身后的儿子,举着另一瓶奶茶付完钱正要走,身后的儿子嚷道:"两瓶,我这还有一瓶!"摊主皱皱眉,很快笑了:"你 ...

  8. Hadoop(四)hdfs基本操作

    HDFS是Hadoop的分布式文件系统,存储海量数据,通过多HDFS操作的了解,进一步了解HDFS. HDFS上的操作,通过两个方面来了解,1:shell客户端,2:Java客户端. 一,shell客 ...

  9. python上传本地文件到远程hdfs_Python之——自动上传本地log文件到HDFS(基于Hadoop 2.5.2)...

    一.场景描述 比如我们的网站共有5台Web设备,日志文件存放在/data/logs/日期(20180114)/access.log.日志为默认的Nginx定义格式,如下所示: 10.2.2.234 - ...

最新文章

  1. 我的android绘图学习笔记(二)
  2. 一段典型的PHP程序都包含那些内容呢?
  3. python树的实现_Python实现简单字典树的方法
  4. ubuntu16.04编译安装boost
  5. 一个类作为另一个类的数据成员
  6. 张斌教授评《你的知识需要管理》
  7. 进入顶层社会的顺序是什么?
  8. 34岁程序员面试被拒:混得好的年轻人都有这3个特质
  9. 搞机器学习还敲什么代码
  10. js判断网页标题包含某字符串则替换
  11. 剑指offer面试题58 - II. 左旋转字符串(切片)(一行代码)
  12. 工资计算问题,类似计算某天是一年中的第几天的问题
  13. 计算机专业英语 9次作业合集 从第九次到第一次
  14. 机器学习 K-Nearst-Neighbors算法
  15. HTTP协议详解(一)
  16. cortana连不上网络_Alexa,为什么Cortana仍在我的计算机上?
  17. 基于redis实现抢红包功能(包括余额退回处理)
  18. java计算机毕业设计汉服服装租赁系统源码+mysql数据库+系统+lw文档+部署
  19. servlet容器,web容器,spring容器,springmvc容器的区别
  20. 15款Java程序员必备的开发工具(转)

热门文章

  1. 读《前端迷茫怎么办?——张鑫旭》有感
  2. GitLab下载源码的两种方式(https/ssh-key)
  3. 2ggplot2简介
  4. css中div边框外发光
  5. C语言学习-翁凯(第六章笔记)
  6. vux scroller在iOS上,一停止滑动就跳到顶部
  7. 随机过程(2.2)—— 多维高斯分布
  8. python实现阴阳师自动刷御魂脚本_用Python实现FGO自动战斗脚本
  9. 2019年全球最安全20大航空公司公布,澳航居首、国泰长荣上榜 | 周末
  10. 渗透测试基础-文件上传漏洞 (下)