Hadoop启用Lzo压缩

本文参考http://slaytanic.blog.51cto.com/2057708/1162287,感觉本地编译较为麻烦,所以总结了再Ubuntu上比较简洁快速的方式

关于lzo压缩与gzip、bzip2要所的异同优劣请查阅其他文档,本文只做配置。


前提,假定所有hadoop节点都已部署完成,ant、maven、git都已安装完成并可用。

1、2步骤需要在所有Hadoop节点进行  3、4步骤修改完之后也需要同步到所有hadoop节点。

1.安装LZO库(动态链接文件),第二步依赖本步骤

  

sudo apt-get install liblzo2-dev

2.安装lzop(解压缩lzo文件的工具,也就是我们的主角)

 

sudo apt-get install lzop

至此可以再本地解压缩lzo文件


3.本地编译hadoop-lzo -xxx.jar,及native文件

   如果找到已经编译好的jar包,native文件可直接使用(具体使用见步骤4)

 check源码,建议使用twitter的源码。地址为https://github.com/twitter/hadoop-lzo.git

git clone https://github.com/twitter/hadoop-lzo.git hadoop-lzo

clone完成后进入hadoop-lzo目录,并修改pom文件

因为我用的hadoop版本是1.2.1,所以再1\2\3处进行了修改

修改处未你当前使用的hadoop版本,如有需要请提前将对应hadoop集群的jar包(hadoop-core-xxx,jar)install至你的本地repositry活deploy至nexus


修改nexus两个库的地址


以上完成之后进行编译

mvn install 或 mvn deploy

完成之后拷贝jar包及native库到各hadoop节点

cp hadoop-lzo-xxx.jar  $HADOOP_HOME/lib
cp  -R native $HADOOP_HOME/lib/native

接着scp至所有hadoop节点,scp命令格式

scp localfile username@remotehost:/remotedir


4.修改配置文件

 core-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,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> 

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>   
 <property>  
             <name>mapred.child.env</name>   
             <value>LD_LIBRARY_PATH=/home/john/dev/hadoop-1.2.1/lib/native/Linux-amd64-64</value>   
 </property> 

 

修改完成后scp至所有hadoop节点,重启。

5.测试

我下了个某网站的帐号及密码文件,此处文件随便找个就ok,行内内容用tab建分割。

1.压缩并put进hdfs

    a.压缩

       lzop userpass.txt

      此时会生成userpass.txt.lzo文件

      将该文件put进hadoop目录

     b.put进hdfs

      hadoop fs -put /aaa/aaa/userpass.txt.lzo  /data/input/renren

     c.创建索引

       hadoop jar $HADOOP_HOME/lib/hadoop-lzo.jar com.hadoop.compression.lzo.DistributedLzoIndexer  /data/input/renren/userpass.txt.lzo

2.修改Hadoop的例子WordCount(可去hadoop目录下的example中找代码)

   将FileInputStream替换为DeprecatedLzoTextInputFormat

3.执行

   具体执行略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装LZS库和HadoopLZO压缩算法库可以按照以下步骤进行: 1. 下载LZS库和HadoopLZO压缩算法库。 可以从以下网址下载对应版本的LZS库和HadoopLZO压缩算法库: - LZS库:http://www.lzsupdates.com/download/lzs-1.6.tar.gz - HadoopLZO压缩算法库:https://github.com/ning/jvm-compressor-snappy/releases/download/v0.1.0-native-hadoop1.0.4.1/libhadoop-gpl-compression-0.1.0-native-1.0.4.1.jar 2. 安装LZS库。 解压下载的LZS库文件,并按照以下步骤进行安装: ```bash tar -zxvf lzs-1.6.tar.gz cd lzs-1.6 ./configure make make install ``` 安装完成后,可以使用以下命令检查是否安装成功: ```bash lzs --version ``` 3. 安装HadoopLZO压缩算法库。 将下载的`libhadoop-gpl-compression-0.1.0-native-1.0.4.1.jar`文件复制到Hadoop的`lib`目录下: ```bash cp libhadoop-gpl-compression-0.1.0-native-1.0.4.1.jar $HADOOP_HOME/lib/ ``` 然后,需要在Hadoop的配置文件中添加以下配置: ``` io.compression.codecs org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec,com.hadoop.compression.lzo.LzoCodec io.compression.codec.lzo com.hadoop.compression.lzo.LzoCodec ``` 配置完成后,重启Hadoop集群,以确保配置生效。 注意:如果您使用的是CDH、HDP等Hadoop发行版,则可以跳过以上步骤,因为这些发行版已经默认包含了LZO压缩算法库。 安装完成后,您就可以在Java的Spark程序中使用LZS压缩算法了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值