Hadoop集群中添加Snappy解压缩库

本文深入介绍了Snappy压缩库,包括其开发背景、优势、性能特点以及如何在Hadoop环境下集成和配置。通过具体实例展示了如何在MapReduce程序中利用Snappy实现高效的数据压缩,同时提供了详细的安装步骤和核心配置信息,帮助开发者掌握Snappy的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Snappy是用C++开发的压缩和解压缩开发包,旨在提供高速压缩速度和合理的压缩率。Snappy比zlib更快,但文件相对要大20%到100%。在64位模式的Core i7处理器上,可达每秒250~500兆的压缩速度。
  Snappy的前身是Zippy。虽然只是一个数据压缩库,它却被Google用于许多内部项目程,其中就包括BigTable,MapReduce和RPC。Google宣称它在这个库本身及其算法做了数据处理速度上的优化,作为代价,并没有考虑输出大小以及和其他类似工具的兼容性问题。Snappy特地为64位x86处理器做了优化,在单个Intel Core i7处理器内核上能够达到至少每秒250MB的压缩速率和每秒500MB的解压速率。
  如果允许损失一些压缩率的话,那么可以达到更高的压缩速度,虽然生成的压缩文件可能会比其他库的要大上20%至100%,但是,相比其他的压缩库,Snappy却能够在特定的压缩率下拥有惊人的压缩速度,“压缩普通文本文件的速度是其他库的1.5-1.7倍,HTML能达到2-4倍,但是对于JPEG、PNG以及其他的已压缩的数据,压缩速度不会有明显改善”。

  1. 安装snappy

    yum install snappy snappy-devel
  2. hadoop环境增加 snappp.so文件

    ln -sf /usr/lib64/libsnappy.so $HADOOP_HOME/lib/native/.
  3. 在$HADOOP_HOME/etc/hadoop/core-site.xml文件中加入snappy配置

    <property>
        <name>io.compression.codecs</name>
        <value>
          org.apache.hadoop.io.compress.GzipCodec,
          org.apache.hadoop.io.compress.DefaultCodec,
          org.apache.hadoop.io.compress.BZip2Codec,
          org.apache.hadoop.io.compress.SnappyCodec
        </value>
    </property>

    下面是配置在map的输出启用压缩

    <property> 
        <name>mapreduce.map.output.compress</name> 
        <value>true</value> 
    </property> 
    
    <property> 
        <name>mapreduce.map.output.compress.codec</name> 
        <value>org.apache.hadoop.io.compress.SnappyCodec</value> 
    </property> 
  4. 重新启动hadoop的相关进程,使得上面的配置生效

  5. 如果你要在Mapreduce程序里面使用Snappy相关类库,可以用下面的方法实现

    Configuration conf = new Configuration();
    
    //对map输出的内容进行压缩
    conf.set("mapred.compress.map.output","true");
    conf.set("mapred.map.output.compression.codec",
                          "org.apache.hadoop.io.compress.SnappyCodec");
    
    //对reduce输出的内容进行压缩
    conf.set("mapred.output.compress","true");
    conf.set("mapred.output.compression",
                         "org.apache.hadoop.io.compress.SnappyCodec");
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值