压缩格式帮忙笔记,Hive中间结果和结果的滑坡

作者: 计算机网络  发布:2019-11-04

Hadoop中扶助的减削方式有多种,譬喻Gzip,bzip2,zlib等,当中Gzip是hadoop中放到就扶助的朝气蓬勃种压缩方式,这种压缩格局在平时linux 的开辟人士和治本 员中运用的相比较宽泛,压缩比也正如高,压缩速度也还不易,所以重重人都喜欢第大器晚成趋势于使用这种压缩格式进行理文件件 的裁减。
       在hadoop中,要在mapreduce 的job中动用gzip压缩是比比较简单于的,不记得是从哪个版本最先,hadoop就放到了应用gzip压缩格式读取输入文件,写中间结果和输出结果的支撑。
        要在hadoop的mapreduce中运用gzip非常轻易,分为以下二种状态:

Hadoop中普及的压缩格式及特点如下:

  1. 从减弱的输入文件时一直读入
    鉴于hadoop在读取输入文件时,会很智能的基于输入文件的后缀名来开展决断是或不是利用压缩格式进行读入,所以当读到输入文件是***.gz时,就能够可疑该公文是叁个用gzip压缩过的公文,于是就能够尝试选用gzip的读取形式来读取.
  2. 将mapreduce job所发生的中档结果举办压缩
    由于mapreduce算法自个儿的特点,必然会在job的运作进程中生出一定的高级中学级结果文件,当数据量相当的大的时候,那个中级结果也要命的合理,一定水平上,对job的频率会有确定的震慑。由于平日计算职分的瓶颈都在磁盘的读写IO上,由此只要能够降低因中间文件而产生的disk IO,则对学业的作用肯定有益无害。因而假设期待将mapreduce作业的中档结果进行压缩,在hadoop的conf(能够通过校勘hadoop- site.xml的配备选项,可以在前后相继中用JobConf的类接口设置 ,恐怕在提交作业时用-D选项来设置该接受卡塔尔中配备多个抉择:
    <property>
        <name>mapred.compress.map.output</name>
        <value>true</value>
    </property>
    这么,作业就能够将产生的中级结果写入slave local的时候,对结果实行裁减,reduce读取时也能够依据gz的后缀知道该中间结果是压缩文件,于是利用相应的读取格式来读取。
  3. 将最后的精兵简政输出的结果开展压缩
    部分时候,大家必要对学业的运行结果开展历史保存,不过假设天天积攒的乘除结果非常的大,又想要保存尽量多的野史结果意气风发边未来的买下账单,那么积水成渊下,就能占用非常相当的大的HDFS的囤积空间 ,何况鉴于是野史数据,使用的频率也不高,那就能够招致不小的蕴藏空间的浪费,因而,将总计的结果实行压缩,也是生龙活虎种万分好的节约空间的措施。要在hadoop job中成功那点也非常轻巧,只须求报告hadoop,“小编想要多job的出口结果开展减少,并保存到HDFS上去”,就能够了。具体的操作就是:在 conf中设置配置选项:
    <property>
           <name>mapred.output.compress</name>
           <value>true</value>
    </property>

压缩格式 工具 算法 文件扩大名 多文本 可分割性
DEFLATE* 无 DEFLATE .deflate 不 不
Gzip gzip DEFLATE .gz 不 不
ZIP zip DEFLATE .zip 是 是,在文件范围内
bzip2 bzip2 bzip2 .bz2 不 是
LZO lzop LZO .lzo 不 不

       以下是接纳hadoop-0.19.1对二个11358 Byte的公文实行两种方法的收缩的对照:

第生龙活虎hive作业结果最棒使用sequencefile,因为textfile是从未有过减掉的。

  • 读取非压缩文件,中间结果不巨惠扣,输出结果也不裁减

运用sequencefile很简短,只要在建表的时候用:

   HDFS bytes read
 HDFS bytes written
Local bytes read
Local bytes written
 Map  13872  0  0 9922
 Reduce  0  6117 9860
9860
 Total  13872 6117
9860
19782

stored as seqeuncefile

 

宣示就能够。

  • 读取非压缩文件,中间结果压缩,输出结果不降价扣

留神借使是用create table as语句,它会读取hive-site.xml里的暗许格式(私下认可是textfile卡塔 尔(英语:State of Qatar)。

 

sequencefile有三种压缩格局:NONE, RECO奥迪Q7D, BLOCK。暗许是启用RECOCRUISERD级的减削的,www.linuxidc.com 这种方法的压缩率是非常的低的。由此建议拉开BLOCK压缩。
布署如下:

   HDFS bytes read
HDFS bytes written
Local bytes read
Local bytes written
 Map  13872 0
 0 9922
 Reduce  0  2663  9860  9860
 Total  13872  2663  9860  19782

hadoop-site.xml配置:

  • 读取非压缩文件,中间结果压缩,输出结果也回降

<property>
  <name>mapred.output.compression.type</name>
  <value>BLOCK</value>
  <description> </description>
</property>

 

<property>
  <name>io.seqfile.compressioin.type</name>
  <value>BLOCK</value>
  <description> </description>
</property>

  HDFS bytes raed
HDFS bytes written
Local bytes read
Local bytes written
 Map  13872  0 0
4221
 Reduce  0  2663  3623  3423
 Total  13872  2663  3623  7844

下一场配置:

     
        因而大家得以看来,在hadoop中动用gzip压缩来扩充读取,中间结果,数据结果的保留都以万分的轻便,因为hadoop native本人就提供了我们相应的类来分析和压缩数量。不过这里要特别涉及的是:gzip压缩格式在hadoop中的扶植有一定的局限性:  由于gzip压缩算法自身的因由,大家不能对gzip压缩文件举行分块,也正是说,在hadoop中,要是想要用hadoop 的mapreduce来管理数量,没二个mapper就必得相应七个gz文件,无法四个mapper对一个gzip文件的多个chunk实行相互作用的拍卖,因而若是要在hadoop mapreduce职务中运用gzip,在数码管理早前就须要对数码实行认为的切分,让多个mapper来管理一块数据。那样其实有少数有违 mapreduce的面目。

<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>或在hive-site.xml中配置:
<property>
  <name>hive.exec.compress.output</name>
  <value>true</value>
  <description>Should the job outputs be compressed?
  </description>
</property>之后大家就足以安插输出结果的缩小方式了,私下认可是行使zlib,即org.apache.hadoop.io.compress.DefaultCodec。
咱俩得以改成其余的,举例速度十分的快的lzo。

图片 1

内需静心的是,lzo在0.19.第11中学是存在的,可是在0.20之后,因为许可证难点被移除了,是急需单独安装的。

首先必要增添lzo codec,在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>
任何的回退配置遵照下面的写就OK。

图片 2

本文由今晚开什么码发布于计算机网络,转载请注明出处:压缩格式帮忙笔记,Hive中间结果和结果的滑坡

关键词:

上一篇:ubuntu googlepinyin 和idea 的标题
下一篇:没有了