Hadoop所支持的几种压缩格式,4种常用压缩格式在
分类:计算机网络

目前在Hadoop中用得比比较多的有lzo,gzip,snappy,bzip2那4种压缩格式,小编依据实行涉世介绍一下这4种压缩格式的利弊和使用途景,以便咱们在施行中依据实际意况选取不一致的压缩格式。

我们Hadoop 2.4集群暗中同意不支持snappy压缩,可是这段时间有作业方说他们的有个别数据是snappy压缩的(那有的数码由别的三个集群提需求他们时就是snappy压缩格式的卡塔尔想迁移到到大家集群上面来扩充总括,可是一贯运转时报错:

1 gzip压缩

--------------------------------------分割线

有关阅读

Ubuntu 13.04上搭建Hadoop环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu上搭建Hadoop遭逢(单机情势+伪分布情势卡塔尔 http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu下Hadoop意况的计划 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建Hadoop情况图像和文字化教育程详细解释 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop LZO 安装教程 http://www.linuxidc.com/Linux/2013-01/78397.htm

Hadoop集群上运用Lzo压缩 http://www.linuxidc.com/Linux/2012-05/60554.htm

Failed with exception java.io.IOException:java.lang.RuntimeException:
native snappy library not available: this version of libhadoop was built without snappy support

可取:压缩率比较高,而且滑坡/解压速度也非常快;hadoop本身扶助,在采用中管理gzip格式的公文就和直接管理文件同样;有hadoop native库;大多数linux系统都自带gzip命令,使用方便。

--------------------------------------分割线

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,並且十分以前的应用程序(即应用程序无需修正卡塔 尔(英语:State of Qatar)的景况。

最终用二个表格相比上述4种压缩格式的风味(优劣点卡塔 尔(英语:State of Qatar):

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

越来越多Hadoop相关音讯见Hadoop 专项论题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文恒久更新链接地址:http://www.linuxidc.com/Linux/2014-04/101230.htm

图片 1

依据报错新闻展现snappy当地库不可用,同一时间仿佛在编写翻译libhadoop的时候必要特意钦点以支撑snappy,那一点分化于hadoop1.0,hadoop1.0只供给将snappy的地头库文件往钦命目录大器晚成正片就能够,无需再一次编写翻译libhadoop本地库文件。

缺点:不支持split。

鉴于snappy压缩算法压缩比不是超高,尽管在解压缩功用上又好几优势,所以我们集群暗中同意未有支持snappy,大家集群的数据须求是RCFile+Gzip,以下是两种压缩格式在hadoop中的优劣势比较:

接收场景:当每一个文件减少之后在130M以内的(1个块大小内卡塔 尔(阿拉伯语:قطر‎,都足以思索用gzip压缩格式。比方说一天只怕一个小时的日记压缩成四个gzip文件,运维mapreduce程序的时候经过几个gzip文件达到并发。hive程序,streaming程序,和java写的mapreduce程序完全和文本管理同样,压缩之后原本的前后相继无需做其它退换。

参照地址:http://www.linuxidc.com/Linux/2014-05/101230.htm

2 lzo压缩

如今在Hadoop中用得比相当多的有lzo,gzip,snappy,bzip2这4种压缩格式,作者遵照施行经历介绍一下那4种压缩格式的利弊和应用项景,以便大家在施行中依据实情选拔不一致的压缩格式。

优点:压缩/解压速度也正如快,合理的压缩率;扶持split,是hadoop中最盛行的压缩格式;帮助hadoop native库;能够在linux系统下安装lzop命令,使用方便。

1、gzip压缩

破绽:压缩率比gzip要低一些;hadoop本身不扶持,须要设置;在采纳中对lzo格式的文件需求做一些革故改良管理(为了援救split需求建索引,还索要钦命inputformat为lzo格式卡塔 尔(阿拉伯语:قطر‎。

可取:压缩率相比高,並且减少/解压速度也非常的慢;hadoop本人扶植,在应用中管理gzip格式的文书就和平昔管理文件同样;有hadoop native库;半数以上linux系统都自带gzip命令,使用方便。

采纳场景:五个非常的大的文件文件,压缩之后还不仅200M以上的能够思量,况且单个文件越大,lzo优点越越鲜明。

缺点:不支持split。

3 snappy压缩

使用项景:当种种文件减弱之后在130M之内的(1个块大小内卡塔 尔(阿拉伯语:قطر‎,都足以伪造用gzip压缩格式。举例说一天照旧三个钟头的日记压缩成三个gzip文件,运行mapreduce程序的时候经过八个gzip文件达到并发。hive程序,streaming程序,和java写的mapreduce程序完全和文本管理形似,压缩之后原本的次第没有必要做此外改动。

优点:高速压缩速度和客体的压缩率;帮忙hadoop native库。

2、lzo压缩

缺陷:不扶助split;压缩率比gzip要低;hadoop自己不援助,须要设置;linux系统下未有相应的授命。

可取:压缩/解压速度也正如快,合理的压缩率;帮忙split,是hadoop中最流行的压缩格式;帮忙hadoop native库;能够在linux系统下安装lzop命令,使用方便。

行使场景:当mapreduce作业的map输出的数码十分的大的时候,作为map到reduce的中等数据的压缩格式;或然充作二个mapreduce作业的出口和别的多个mapreduce作业的输入。

劣点:压缩率比gzip要低一些;hadoop本人不扶持,需求安装;在动用中对lzo格式的文本需求做一些非同一般管理(为了协助split须求建索引,还索要内定inputformat为lzo格式卡塔 尔(阿拉伯语:قطر‎。

4 bzip2压缩

行使场景:二个非常大的文书文件,压缩之后还超过200M以上的可以酌量,而且单个文件越大,lzo优点越越猛烈。

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

3、snappy压缩

弱点:压缩/解压速度慢;不协助native。

亮点:高速压缩速度和成立的压缩率;帮衬hadoop native库。

利用处景:符合对速度必要不高,但需求较高的压缩率的时候,能够看作mapreduce作业的输出格式;大概输出之后的数量超级大,管理以往的数量要求减少存档减少磁盘空间况且未来数据用得少之又少的场馆;大概对单个不小的公文文件想收缩收缩存款和储蓄空间,同不平时间又须求扶持split,况兼分外以前的应用程序(即应用程序无需改正卡塔 尔(阿拉伯语:قطر‎的景色。

劣点:不辅助split;压缩率比gzip要低;hadoop自身不帮忙,必要设置;linux系统下并未有对景挂画的一声令下。

最终用一张图比较上述4种压缩格式的特色(优短处卡塔 尔(阿拉伯语:قطر‎:

利用处景:当mapreduce作业的map输出的数目超级大的时候,作为map到reduce的中游数据的压缩格式;或然当做叁个mapreduce作业的输出和其余二个mapreduce作业的输入。

4种压缩格式的性状的比较

4、bzip2压缩

亮点:扶助split;具备相当的高的压缩率,比gzip压缩率都高;hadoop本人帮衬,但不协助native;在linux系统下自带bzip2命令,使用方便。

症结:压缩/解压速度慢;不帮衬native。

接收场景:切合对速度要求不高,但需求较高的压缩率的时候,能够充当mapreduce作业的出口格式;可能输出之后的数额极大,管理现在的多少要求减小存档减少磁盘空间况兼未来数据用得超级少的景观;也许对单个超大的文书文件想削减收缩存款和储蓄空间,同期又需求援助split,何况异常早先的应用程序(即应用程序无需改进卡塔 尔(阿拉伯语:قطر‎的情形。

末段用三个报表比较上述4种压缩格式的特征(优短处卡塔 尔(英语:State of Qatar):

4种压缩格式的特色的相比

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

小心:以上二种压缩算法都是在收缩普通文书的前提下来讲的是或不是帮忙split,如果是RCFile、Sequence Files等,本人就协助split,经过压缩之后风流浪漫律是永葆split的。

综上,大家hadoop2.4集群须要RCFile+gzip是有必然道理的,首先RCFile格式的文本援助按列存款和储蓄,同有时间扶持split,而gzip的压缩率比较高,并且减弱/解压速度也不慢,所以RCFile格式的文书通过gzip压缩后不只能保证文件能split,还是能够确定保障相当的高压缩/解压速度和压缩比。

以上说了半天题外话,以下来步入正题来讲一下什么样在不替换集群本地库文件,不重启hadoop进度,也即在hadoop的顾客端就会解决支撑snappy压缩的题指标主意:

1、编写翻译snappy本地库,编写翻译之后snappy本地库文件地方:/data0/liangjun/snappy/

参照地址: http://www.linuxidc.com/Linux/2014-12/110858.htm

2、重新编写翻译libhadoop.so文件,编写翻译时经过-Dsnappy.prefix钦赐snappy本地库文件地方编写翻译:

mvn clean package -Pdist -Dtar -Pnative -Dsnappy.prefix=/data0/liangjun/snappy/ -DskipTests

注:作者测验了弹指间,通过-Drequire.snappy编写翻译的libhadoop.so也有效的:

mvn clean package -Pdist,native -DskipTests -Drequire.snappy

3、实践完上边两步之后,最后只要求得到libhadoop.so和libsnappy.so.1多少个文件(只供给那四个文本,别的得经过自家测验都过滤掉了卡塔尔国,以下是MapReduce和hive的利用snappy压缩的事例:

(1)、MapReduce,将编写翻译好的地面库加到DistributedCache中就足以:

在测量检验情形的客户端mapred-site.xml文件增添以下三个布局项以支撑map端数据的时候按snappy压缩:

<property>
    <name>mapreduce.map.output.compress</name>
    <value>true</value>
    <final>true</final>
  </property>
  <property>
    <name>mapreduce.map.output.compress.codec</name>
    <value>org.apache.hadoop.io.compress.SnappyCodec</value>
    <final>true</final>
  </property>

上传libhadoop.so和libhadoop.so到钦点hdfs目录/test/snappy/下,通过-files钦命文件:

hadoop jar hadoop-mapreduce-examples-2.4.0.jar wordcount -files hdfs://ns1/test/snappy/libhadoop.so,hdfs://ns1/test/snappy/libsnappy.so.1  /test/missdisk/ /test/wordcount

(2)、hive,通过add file钦命文件:

hive >add file libhadoop.so;
hive >add file libsnappy.so.1;
hive >select count(*) from ct_tmp_objrec;

表ct_tmp_objrec的数量是文件文件通过snappy压缩的数目,ct_tmp_objrec存款和储蓄格式是平日的文本格式。

运行hql之后,开掘snappy格式的数量可见健康管理总括了,不过200+M的公文只可以由二个map职务管理,既不帮助split。

==========================================================

以下一些是就RCFile+snappy的数据是或不是协理split的测量试验:

1、创造测量试验表snappy_test,该表和眼下的ct_tmp_objrec列完全相近,只是hive表存款和储蓄格式换到了RCFile:

CREATE EXTERNAL TABLE `snappy_test`(
  `from_id` string,
  `to_id` string,
  `mention_type` bigint,
  `repost_flag` bigint,
  `weight` double,
  `confidence` double,
  `from_uid` string,
  `to_object_label` string,
  `count` bigint,
  `last_modified` string,
  `time` string,
  `mblog_spam` bigint,
  `mblog_simhash` string,
  `mblog_dupnum` bigint,
  `mblog_attribute` bigint,
  `user_quality` bigint,
  `user_type` bigint,
  `old_weight` double,
  `obj_pos` bigint,
  `quality` bigint)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.RCFileInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'
LOCATION
  'hdfs://ns1/user/liangjun/warehouse/tables/snappy_test'

2、将ct_tmp_objrec中plain text+snappy压缩的数码转成snappy_test中RCFile+gzip压缩的多少:

hive >add file libhadoop.so;
hive >add file libsnappy.so.1;
hive >set hive.exec.compress.output=true;
hive >set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
hive >INSERT OVERWRITE table snappy_test select from_id,to_id,mention_type,repost_flag,weight,confidence,from_uid,to_object_label,count,last_modified,time,mblog_spam,mblog_simhash,mblog_dupnum,mblog_attribute,user_quality,user_type,old_weight,obj_pos,quality from ct_tmp_objrec;

3、查询snappy_test中的RCFile+snappy数据看是还是不是能split

hive >add file libhadoop.so;
hive >add file libsnappy.so.1;
hive >select count(*) from snappy_test;

运作hql之后,发掘RCFile+snappy的数额可见符合规律处理总结,同不时候200+M的公文split成多个map任务处理,测量检验完了。

Hadoop2.5.2 新特性  http://www.linuxidc.com/Linux/2014-11/109814.htm

CentOS安装和安排Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04上搭建Hadoop环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1本子集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu上搭建Hadoop境遇(单机情势+伪分布方式卡塔 尔(英语:State of Qatar) http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu下Hadoop意况的布局 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建Hadoop情状图像和文字化教育程安详严整 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建Hadoop情状(在Winodws情形下用编造机虚拟三个Ubuntu系统开展搭建卡塔尔国 http://www.linuxidc.com/Linux/2011-12/48894.htm

越多Hadoop相关音讯见Hadoop 专项论题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文永世更新链接地址:http://www.linuxidc.com/Linux/2014-12/110857.htm

图片 2

本文由美高梅网址发布于计算机网络,转载请注明出处:Hadoop所支持的几种压缩格式,4种常用压缩格式在

上一篇:没有了 下一篇:批量获取图形视图中心坐标
猜你喜欢
热门排行
精彩图文