Hadoop中常用的压缩算法有bzip2、gzip、lzo、snappy,其中lzo、snappy需要操作系统安装native库才可以支持

下面这张表,是比较官方一点的统计,不同的场合用不同的压缩算法。bzip2和GZIP是比较消耗CPU的,压缩比最高,GZIP不能被分块并行的处理;Snappy和LZO差不多,稍微胜出一点,cpu消耗的比GZIP少。

通常情况下,想在CPU和IO之间取得平衡的话,用Snappy和lzo比较常见一些。

Comparison between compression algorithms

Algorithm % remaining Encoding Decoding
GZIP 13.4% 21 MB/s 118 MB/s
LZO 20.5% 135 MB/s 410 MB/s
Snappy 22.2% 172 MB/s 409 MB/s

对于数据格式为TextFile,Sequence,以及其他用户自定义的文件格式的文件,都可以采用以上的压缩算法进行压缩;

TextFile在压缩以后,不能split,压缩出来的数据当做job的输入是一个文件作为一个map。SequenceFile本身是分块的,加上lzo的压缩格式,文件可以实现lzo方式的split操作,可以按照record、block进行压缩,一般采用block效率更高一些。

一、hadoop(hive)对mapreduce压缩参数设置
1、mapreduce的中间结果对压缩的支持

方法一:

hadoop 中 mapred-site.xml

<property>

<name>mapred.compress.map.output</name>

<value>true</value>

</property>

<property>

<name>mapred.map.output.compression.codec</name>

<value>com.hadoop.compression.lzo.LzoCodec</value>

</property>

方法二

hive中hive-site.xml

<property>
  <name>hive.exec.compress.intermediate</name>
  <value>true</value>
  <description>Should the outputs of the maps be compressed before being
               sent across the network. Uses SequenceFile compression.
  </description>
</property>
<property>
  <name>hive.intermediate.compression.codec</name>
  <value>org.apache.hadoop.io.compress.LzoCodec</value>
  <description>If the map outputs are compressed, how should they be
               compressed?
  </description>
</property>
方法三
hive中shell
set hive.exec.compress.intermediate=true;

set hive.intermediate.compression.codec="org.apache.hadoop.io.compress.LzoCodec";

2、mapreduce的输出结果对压缩的支持

hive-site.xml中配置:

<property>
  <name>hive.exec.compress.output</name>
  <value>true</value>
  <description>Should the job outputs be compressed?
  </description>
</property>
<property>
  <name>mapred.output.compression.codec</name>
  <value>org.apache.hadoop.io.compress.LzoCodec</value>
  <description>If the job outputs are compressed, how should they be compressed?
  </description>
</property>

或者在hadoop-site.xml中添加:

<property>
  <name>io.compression.codecs</name>
  <value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.LzoCodec</value>
  <description>A list of the compression codec classes that can be used
               for compression/decompression.</description>
</property>
<property>
  <name>mapred.output.compress</name>
  <value>true</value>
  <description>Should the job outputs be compressed?
  </description>
</property>
<property>
  <name>mapred.output.compression.codec</name>
  <value>org.apache.hadoop.io.compress.LzoCodec</value>
  <description>If the job outputs are compressed, how should they be compressed?
  </description>
</property>

二、HBASE对这三种压缩格式的支持

HBase中可以对HFile进行gzip、lzo、snappy方式的压缩存储。

1、对于gzip压缩的支持
hbase(main):001:0> create 'testtable', { NAME => 'colfam1',
COMPRESSION => 'GZ' }

或者alter 'testtable',不过要先disable table,完成压缩后,再enable table

2、对于lzo的支持,需要系统安装lzo动态库,以及hadoop lzo相关的native库,后把native库jar文件copy到hadoop/lib/native 及 hbase/lib/native中
   同时在core-site.xml中,配置lzo压缩
      
       <property>
         <name>io.compression.codecs</name>
         <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec
        </value>
       </property>
      <property>
        <name>io.compression.codec.lzo.class</name>
        <value>com.hadoop.compression.lzo.LzoCodec</value>
      </property>

org.apache.hadoop.io.compress.DefaultCodec是hadoop默认的zlib压缩

hbase(main):001:0> create 'testtable', { NAME => 'colfam1',
COMPRESSION => 'lzo' }
 3、  对于synappy的支持,需要安装snappy,并且 将 hadoop-snappy-0.0.1-SNAPSHOT.tar.gz 的native中的动态静态链接库文件拷到hadoop以及hbase lib的native下面,将hadoop-snappy-0.0.1-SNAPSHOT.jar考到hadoop 以及hbase 的lib下
   在core-site.xml中,配置lzo压缩
      
       <property>
         <name>io.compression.codecs</name>
         <value>org.apache.hadoop.io.compress.SnappyCodec
        </value>
       </property>

hbase(main):001:0> create 'testtable', { NAME => 'colfam1',
COMPRESSION => 'synappy' }

关于几种压缩算法以及hadoop和hbase中的压缩配置说明相关推荐

  1. 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么

    原文链接 什么是Zookeeper,Zookeeper的作用是什么,它与NameNode及HMaster如何协作?在没有接触Zookeeper的同学,或许会有这些疑问.这里给大家总结一下. 一.什么是 ...

  2. ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用

    ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用 - 文章 - 伯乐在线 /* # The number of milliseconds of each tick tickTim ...

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

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

  4. Hadoop/HBase 配置snappy压缩

    Hadoop/HBase 开启snappy压缩 参考链接 hadoop-snappy Google Code snappy.compression hbase docs cnblogs参考资料 ins ...

  5. 配置密码分布式集群环境hadoop、hbase、zookeeper搭建(全)

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 1.环境说明 群集环境少至要需3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以互相pin ...

  6. Hadoop与Hbase基本配置

    在经历了几周的努力之后,终于选择放弃现在安装的稳定版本,转而安装旧版本来部署Sleuthkit-Hadp系统.直到昨天,自己还一直为Inconsistent configuration的错误头疼不已. ...

  7. hadoop hive hbase 入门学习 (二)

    hadoop 自学系列                hadoop hive hbase 入门学习 (一) hadoop安装.hdfs学习及mapreduce学习 hadoop 软件下载 (hadoo ...

  8. Zookeeper 教程:Zookeeper作为Hadoop和Hbase的重要组件,为分布式应用程序协调服务

    目录 Zookeeper 教程 适用人群 学习前提 Zookeeper 概述 分布式应用 分布式应用的优点 分布式应用的挑战 什么是Apache ZooKeeper? ZooKeeper的好处 Zoo ...

  9. Hadoop(五)HBase基础

    Apache HBase是Hadoop的数据库,一个分布式的,可扩展的,大数据存储组件. Apache HBase适合随机的.实时的读写你的大数据场景,HBase的目标是管理非常大的表,在商业硬件集群 ...

最新文章

  1. “上海名媛群”事件,我来说几句
  2. Docker 配置固定IP及桥接的实现方法(转载)
  3. 病症:arm启动后应用程序界面显示…
  4. github使用心得
  5. python中的数据类型,存储,实现
  6. 不同的二叉搜索树—leetcode96
  7. Nginx的rewrite之if指令(一)
  8. python绘制折线图怎么样填充空白颜色_Python:填补两幅图之间的空白
  9. 前端学习:Vue.js基本使用
  10. Elasticsearch学习系列-ElasticSearch 核心概念
  11. ASP.NET 经典60道面试题
  12. Chrome控制台console的各种用法(方便调试)
  13. yum 安装、 rpm安装、 源码编译安装
  14. 量子计算机可以预测未来吗,这台量子计算机可以同时预测16种不同的未来
  15. [渝粤教育] 西南石油大学 岩体力学 参考 资料
  16. js植物大战僵尸实训1
  17. qt调用simsimi api实现小黄鸡
  18. 苹果手机开热点电脑/安卓手机无法链接?
  19. 从MSYS2访问Windows目录
  20. Java递归查询某个节点下所有子节点多级信息(递归部门查询,递归树形结构数据查询)

热门文章

  1. 94. Binary Tree Inorder Traversal二叉树的中序遍历
  2. Linux实现最常用的磁盘阵列--RAID5
  3. 常用maven插件总结
  4. Hangry 饥饿成怒 2016-10-03
  5. 基于easyui开发Web版Activiti流程定制器详解(四)——页面结构(下)
  6. [转] 用Firebug调试JavaScript
  7. 按值传递按引用传递按地址传递
  8. 编程学习初体验(4. 编程的核心)
  9. [转载]秀脱linux实战笔记linux-kernel-3.0.3实战篇
  10. postman参数化 接口响应数据获取符合条件的内容参数化给后面的接口使用