Hadoop中最不容错过的压缩知识

随着大数据时代的来临,数据体量越来越大,处理这些数据会越来越受到网络IO的限制,为了尽可能多的处理更多的数据我们必须使用压缩。那么压缩在Hadoop里面是不是所有格式都适用呢?它都有哪些性能呢?

压缩在sqoop里面可以做,在hive和impala里面也可以做。那么什么情况下我们会用压缩呢?通常在数据量非常大,我们通过压缩去减小数据量,从而达到将来去使用数据的时候,减少数据传输IO的情况下去使用。压缩对于性能的提升以及存储效率的提高也有作用。

一、数据压缩

每种文件格式都支持压缩,压缩将减少磁盘空间的占用。但是压缩本身会带来CPU的一些开销,所以压缩需要在CPU时间和带宽/存储空间之间进行权衡。比如:

(1)有些算法会花费很长的时间,但节省更多的空间.

(2)有些算法更快,但节省的空间有限。

这个怎么来理解呢?我们打个比方,假如说1T的数据压缩成100G,可能需要10分钟。如果压缩成500G可能需要1分钟。请问你选择那种方式?所以我们就需要在CPU时间和带宽之间进行一个权衡,当然这里不存在哪种方式的好坏,只是我们根据自己使用的需求去选择。

另外,压缩对性能很有好处:很多Hadoop作业是受IO限制的,使用压缩可以每个IO操作处理更多的数据,压缩也可以改进网络传输的性能。

二、压缩Codecs

压缩算法的实现被称为codec,是Compressor/Decompressor的简写。很多codecs在Hadoop中很常用,每种都有不同的性能特性。但是,不是所有的Hadoop工具都是跟所有codecs兼容的。Hadoop中常用的压缩算法有bzip2、gzip、lzo、snappy,其中lzo、snappy需要操作系统安装native库才可以支持。

在这里我们看一下不同压缩工具的性能:

Bzip2和GZIP是比较消耗CPU的,压缩比最高,GZIP不能被分块并行的处理;Snappy和LZO差不多,稍微胜出一点,CPU消耗的比GZIP少。通常情况下,想在CPU和IO之间取得平衡的话,用Snappy和LZO比较常见一些。这里我重点推荐使用Snappy,因为它可以提供很好地压缩性能,而且压缩的数据是可以分片的,对于后期的运行处理有很大的作用。

另外要注意:对于热数据,速度更重要,1秒压缩40%的数据比10秒压缩80%的数据更好。

三、Sqoop使用压缩

Sqoop使用--compression-codec标志

示例:

--compression-codec
org.apache.hadoop.io.compress.SnappyCodec

四、Impala和Hive使用压缩

Impala和Hive使用压缩,需要我们在创建表的语法中去指定。可能对于不同的压缩而言,我们指定的属性和语法会有不同。

注意:Impala在内存里查询数据-压缩和解压缩都在内存

Impala示例:

建议大家平时多关注一些大数据的相关知识,不断提升和改善自己的知识架构,我自己平时喜欢看“大数据cn”这个微信公众号,里面内容对于我而言很不错,也推荐大家看看。

时间: 2024-10-11 00:53:38

Hadoop中最不容错过的压缩知识的相关文章

[转] - hadoop中使用lzo的压缩

在hadoop中使用lzo的压缩算法可以减小数据的大小和数据的磁盘读写时间,不仅如此,lzo是基于block分块的,这样他就允许数据被分解成chunk,并行的被hadoop处理.这样的特点,就可以让lzo在hadoop上成为一种非常好用的压缩格式. lzo本身不是splitable的,所以当数据为text格式时,用lzo压缩出来的数据当做job的输入是一个文件作为一个map.但是sequencefile本身是分块的,所以sequencefile格式的文件,再配上lzo的压缩格式,就可实现lzo文

hadoop 中对Vlong 和 Vint的压缩方法

hadoop 中对java的基本类型进行了writeable的封装,并且所有这些writeable都是继承自WritableComparable的,都是可比较的:并且,它们都有对应的get() 和 set()方法, 其中对整型(int 和 long)进行编码的时候,有固定长度格式(intWritable和LongWritable)和可变长度格式(VIntWritable 和 VLongWritable),其中VIntWritable和VLongWritable的编码规则是一样的, 所以VIntW

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

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

立足GitHub学编程:13个不容错过的Java项目

立足GitHub学编程:13个不容错过的Java项目 今天我们将整理一大波干货满满的Java示例代码与能力展示素材. GitHub可谓一座程序开发的大宝库,有些素材值得fork,有些则能帮助我们改进自有代码或者学习编程技能.无论如何,开发工作当中我们几乎不可能绕得开GitHub. 下面,我们将一同分享各有趣且颇为实用的Java库,大家请任取所需.不用客气~ 1.极致精简的Java Bootique是一项用于构建无容器可运行Java应用的极简技术.该项目允许大家创建REST服务.Web应用.任务.

Java框架介绍-13个不容错过的框架项目

本文转自互联网,个人收藏所用. 下面,我们将一同分享各有趣且颇为实用的Java库,大家请任取所需.不用客气~ 1.极致精简的Java Bootique是一项用于构建无容器可运行Java应用的极简技术.该项目允许大家创建REST服务.Web应用.任务.数据库迁移等等,且一切都立足于模块实现.另外,大家也可以将其作为简单的命令进行使用. 该项目的目标在于将应用从Java容器中解放出来,允许开发者重新回归main()方法.另外其中还包含部分内置命令,因此就算各位需要处理的代码量不多或者并未向应用中导入

13个不容错过的Java项目

今天我们将整理一大波干货满满的Java示例代码与能力展示素材. GitHub可谓一座程序开发的大宝库,有些素材值得fork,有些则能帮助我们改进自有代码或者学习编程技能.无论如何,开发工作当中我们几乎不可能绕得开GitHub. 下面,我们将一同分享各有趣且颇为实用的Java库,大家请任取所需.不用客气~ 1.极致精简的Java Bootique是一项用于构建无容器可运行Java应用的极简技术.该项目允许大家创建REST服务.Web应用.任务.数据库迁移等等,且一切都立足于模块实现.另外,大家也可

区块链这些技术与h5房卡斗牛平台出售,大数据基础软件干货不容错过

在IT产业发展中,包括CPU.操作系统h5房卡斗牛平台出售 官网:h5.super-mans.com 企娥:2012035031 vx和tel:17061863513 h5房卡斗牛平台出售在内的基础软硬件地位独特,不但让美国赢得了产业发展的先机,成就了产业巨头,而且因为技术.标准和生态形成的壁垒,主宰了整个产业的发展.错失这几十年的发展机遇,对于企业和国家都是痛心的. 当大数据迎面而来,并有望成就一个巨大的应用和产业机会时,企业和国家都虎视眈眈,不想错再失这一难得的机遇.与传统的IT产业一样,大

每位iOS开发人员不容错过的10大实用工具

内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用工具之视频制作 7.iOS开发十大实用工具之分析工具 iOS简介 说起iOS,自然不必多介绍了,它是苹果公司开发的移动操作系统. 苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch.iPad以及Apple TV等产

结合手机上网流量业务来说明Hadoop中的自定义数据类型(序列化、反序列化机制)

大家都知道,Hadoop中为Key的数据类型必须实现WritableComparable接口,而Value的数据类型只需要实现Writable接口即可:能做Key的一定可以做Value,能做Value的未必能做Key.但是具体应该怎么应用呢?--本篇文章将结合手机上网流量业务进行分析. 先介绍一下业务场景:统计每个用户的上行流量和,下行流量和,以及总流量和. 本次描述所用数据: 日志格式描述: 日志flowdata.txt中的具体数据: 接下来贴出详细代码,代码中含有详细注释,从代码中可以看出,