关于几种压缩算法以及hadoop和hbase中的压缩配置说明
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中的压缩配置说明相关推荐
- 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么
原文链接 什么是Zookeeper,Zookeeper的作用是什么,它与NameNode及HMaster如何协作?在没有接触Zookeeper的同学,或许会有这些疑问.这里给大家总结一下. 一.什么是 ...
- ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用
ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用 - 文章 - 伯乐在线 /* # The number of milliseconds of each tick tickTim ...
- Hadoop在MapReduce中使用压缩详解
Hadoop对于压缩格式的是透明识别,我们的MapReduce任务的执行是透明的,Hadoop能够自动为我们将压缩的文件解压,而不用我们去关心. AD:51CTO学院:IT精品课程在线看! Hadoo ...
- Hadoop/HBase 配置snappy压缩
Hadoop/HBase 开启snappy压缩 参考链接 hadoop-snappy Google Code snappy.compression hbase docs cnblogs参考资料 ins ...
- 配置密码分布式集群环境hadoop、hbase、zookeeper搭建(全)
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 1.环境说明 群集环境少至要需3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以互相pin ...
- Hadoop与Hbase基本配置
在经历了几周的努力之后,终于选择放弃现在安装的稳定版本,转而安装旧版本来部署Sleuthkit-Hadp系统.直到昨天,自己还一直为Inconsistent configuration的错误头疼不已. ...
- hadoop hive hbase 入门学习 (二)
hadoop 自学系列 hadoop hive hbase 入门学习 (一) hadoop安装.hdfs学习及mapreduce学习 hadoop 软件下载 (hadoo ...
- Zookeeper 教程:Zookeeper作为Hadoop和Hbase的重要组件,为分布式应用程序协调服务
目录 Zookeeper 教程 适用人群 学习前提 Zookeeper 概述 分布式应用 分布式应用的优点 分布式应用的挑战 什么是Apache ZooKeeper? ZooKeeper的好处 Zoo ...
- Hadoop(五)HBase基础
Apache HBase是Hadoop的数据库,一个分布式的,可扩展的,大数据存储组件. Apache HBase适合随机的.实时的读写你的大数据场景,HBase的目标是管理非常大的表,在商业硬件集群 ...
最新文章
- “上海名媛群”事件,我来说几句
- Docker 配置固定IP及桥接的实现方法(转载)
- 病症:arm启动后应用程序界面显示…
- github使用心得
- python中的数据类型,存储,实现
- 不同的二叉搜索树—leetcode96
- Nginx的rewrite之if指令(一)
- python绘制折线图怎么样填充空白颜色_Python:填补两幅图之间的空白
- 前端学习:Vue.js基本使用
- Elasticsearch学习系列-ElasticSearch 核心概念
- ASP.NET 经典60道面试题
- Chrome控制台console的各种用法(方便调试)
- yum 安装、 rpm安装、 源码编译安装
- 量子计算机可以预测未来吗,这台量子计算机可以同时预测16种不同的未来
- [渝粤教育] 西南石油大学 岩体力学 参考 资料
- js植物大战僵尸实训1
- qt调用simsimi api实现小黄鸡
- 苹果手机开热点电脑/安卓手机无法链接?
- 从MSYS2访问Windows目录
- Java递归查询某个节点下所有子节点多级信息(递归部门查询,递归树形结构数据查询)
热门文章
- 94. Binary Tree Inorder Traversal二叉树的中序遍历
- Linux实现最常用的磁盘阵列--RAID5
- 常用maven插件总结
- Hangry 饥饿成怒 2016-10-03
- 基于easyui开发Web版Activiti流程定制器详解(四)——页面结构(下)
- [转] 用Firebug调试JavaScript
- 按值传递按引用传递按地址传递
- 编程学习初体验(4. 编程的核心)
- [转载]秀脱linux实战笔记linux-kernel-3.0.3实战篇
- postman参数化 接口响应数据获取符合条件的内容参数化给后面的接口使用