hadoop配置lzo,外加自己遇到错误的解决方法


源博客的内容在: http://blog.csdn.net/chenyi8888/article/details/16113891

最近又重新进行了一次配置lzo压缩,步骤如下:

安装前,必须的工具:

 lib* glibc* gcc*

ant mvn

注意:确定gcc版本,之前网上有人说不能使用超过4.4版本的gcc,我在安装过程中使用的gcc4.1.2的版本,也是正常的

 

操作系统名称:

Linux master 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

根据此操作系统,需要安装关联库列表:

kevinweil-hadoop-lzo-6bb1b7f.tar.gz
lzo-2.06-1.el5.rf.x86_64.rpm(根据具体操作系统信息,下载对应的rpm包)
lzo-2.06.tar.gz
lzo-devel-2.06-1.el5.rf.x86_64.rpm(根据具体操作系统信息,下载对应的rpm包)
lzop-1.03.tar.gz

现在在网上下载不到kevinweil-hadoop-lzo-6bb1b7f.tar.gz,变成了hadoop-lzo-master.zip,里面的内容都一样,只是压缩方式不同而已。

 

安装lzo-2.06.tar.gz
下载网址: http://www.oberhumer.com/opensource/lzo/download/
在linux下面,运行命令:
wget  http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
解压后
cd lzo-2.06
执行三部曲:

./configure --enable-shared 
make 
make install

默认安装到/usr/local/lib目录下,然后进行复制操作:

cp /usr/local/lib/liblzo2.* /usr/lib64 (64位)

cp /usr/local/lib/liblzo2.* /usr/lib (32位)

 

安装: lzo-2.06-1.el5.rf.x86_64.rpm和lzo-devel-2.06-1.el5.rf.x86_64.rpm

下载网址:http://pkgs.repoforge.org/lzo/

在liunx下面运行命令:

wget http://pkgs.repoforge.org/lzo/lzo-2.06-1.el5.rf.x86_64.rpm

rpm -ivh lzo-2.06-1.el5.rf.x86_64.rpm

wget http://pkgs.repoforge.org/lzo/lzo-devel-2.06-1.el5.rf.x86_64.rpm

rpm -ivh lzo-devel-2.06-1.el5.rf.x86_64.rpm

安装注意:在我的安装过程中,出现了rpm运行没有任何反应,感觉就阻塞了,通过搜索网上资料,是因为当前机器里的nfs挂载无效导致,卸载掉这个,就运行正常了。

另外就是以上安装是跟具体的操作系统名称来下载对应的rpm包的,具体内容在下载网址里自行寻找。

 

 

安装lozp-1.03.tar.gz

下载网址:http://www.lzop.org/download/

在liunx下面运行命令:

wget http://www.lzop.org/download/lzop-1.03.tar.gz

解压此文件

cd lzop-1.03

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

执行三部曲:

./configure --enable-shared 
make 
make install

验证是否安装成功,运行如下:

[hadoop@master install_software]$ lzop
                          Lempel-Ziv-Oberhumer Packer
                           Copyright (C) 1996 - 2010
lzop v1.03         Markus Franz Xaver Johannes Oberhumer          Nov 1st 2010

Usage: lzop [-dxlthIVL19] [-qvcfFnNPkUp] [-o file] [-S suffix] [file..]

Commands:
  -1     compress faster                   -9    compress better
  -d     decompress                        -x    extract (same as -dPp)
  -l     list compressed file              -I    display system information
  -t     test compressed file              -V    display version number
  -h     give this help                    -L    display software license
Options:
  -q     be quiet                          -v       be verbose
  -c     write on standard output          -oFILE   write output to 'FILE'
  -p     write output to current dir       -pDIR    write to path 'DIR'
  -f     force overwrite of output files
  -n     do not restore the original file name (default)
  -N     restore the original file name
  -P     restore or save the original path and file name
  -S.suf use suffix .suf on compressed files
  -U     delete input files after successful operation (like gzip and bzip2)
  file.. files to (de)compress. If none given, try standard input.

 

 

安装kevinweil-hadoop-lzo-6bb1b7f.tar.gz,此包就是hadoop for lzo的库

下载网址:https://github.com/kevinweil/hadoop-lzo/

注意:之前的老版本可以在https://github.com/kevinweil/hadoop-lzo/downloads下载到kevinweil-hadoop-lzo-6bb1b7f.tar.gz(现在不行了)

目前下载的包是:hadoop-lzo-master.zip,内容一样的,只是压缩方式不同

解压此包:

cd kevinweil-hadoop-lzo-6bb1b7f

export CFLAGS=-m32 

export CXXFLAGS=-m32 

ant compile-native  

or 

export CFLAGS=-m64 

export CXXFLAGS=-m64 

ant compile-native tar

 

执行成功后

cp build/hadoop-lzo-0.4.15.jar $HADOOP_HOME/lib/

cp /build/native/Linux-i386-32/lib/*  $HADOOP_HOME/lib/native/Linux-i386-32/ (32位)

or

cp /build/native/Linux-amd64-64/lib/*  $HADOOP_HOME/lib/native/Linux-amd64-64/ (64位)

 

 以上操作完后,就修改hadoop配置文件相关参数:

core-site.xml (注意红色字体): 

 
io.compression.codecs    
org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.BZip2Codec 
 

 

mapred-site.xml:  

 
mapred.compress.map.output 
true 


mapred.output.compress
true
 
   
mapred.child.env   
JAVA_LIBRARY_PATH=/home/hadoop/hadoop-1.0.3/lib/native/Linux-amd64-64   
 

注意:如果是32位,mapred.child.env的值为:

 JAVA_LIBRARY_PATH=/home/hadoop/hadoop-1.0.3/lib/native/Linux-i386-32

 

最后验证lzo,很幸运,hadoop for lzo有自己的验证方式,运行命令如下:

本地随便找个文件,我以文件hive-default-1151367623824834635.xml为例,先进行lzo压缩,运行命令如下:

lzop -9 hive-default-1151367623824834635.xml

就会生成hive-default-1151367623824834635.xml.lzo

然后运行命令:

mv hive-default-1151367623824834635.xml.lzo hive-default-1151367623824834635.xml.lzo_deflate

进行改名,将此文件上传到HDFS目录上,执行下面命令:

hadoop dfs -put hive-default-1151367623824834635.xml.lzo_deflate /user/hadoop/

然后执行验证命令:

hadoop jar $HADOOP_HOME/lib/hadoop-lzo-0.4.15.jar com.hadoop.compression.lzo.LzoIndexer /user/hadoop/hive-default-1151367623824834635.xml.lzo_deflate
13/11/13 11:34:35 INFO lzo.GPLNativeCodeLoader: Loaded native gpl library
13/11/13 11:34:35 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev 6bb1b7f8b9044d8df9b4d2b6641db7658aab3cf8]
[hadoop@master build]$

 

以上说明:hadoop平台上的lzo压缩后缀名为:lzo_deflate而不是lzo。



到这里源博客的内容结束了。


记录下自己遇到的错误:

在ant hadoop-lzo-master.zip里的内容时报错。


我一开始使用的ant,是通过yum安装得到的。ant时没有报错,内容是:

hadoop配置lzo,外加自己遇到错误的解决方法_第1张图片

然后加入optional.jar,还是这样的提示。我就把ant删除了,然后从apache ant的官网下载了一个ant,版本是:apache-ant-1.9.4。

用这个ant后,在执行,就报错了。报的是:

hadoop配置lzo,外加自己遇到错误的解决方法_第2张图片

内容是:[javah] Error: Class org.apache.hadoop.conf.Configuration could not be found.

百度加google了半天(google一下子就找到了,百度就呵呵了。还是得,不能懒),终于找到了解决的方法:

源方法在: http://bbs.linuxtone.org/thread-19569-1-1.html

编辑build.xml

找到javah

在最后加上一行

如图:

hadoop配置lzo,外加自己遇到错误的解决方法_第3张图片

然后在执行, ~/apache-ant-1.9.4/bin/ant compile-native tar,就编译成功了。

感动!!!!



2014年6月26日追加

core-site.xml中的配置

 
io.compression.codecs    
org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.BZip2Codec 
 

还得外加一个配置:


io.compression.codec.lzo.class
com.hadoop.compression.lzo.LzoCodec


不然就会报错:

java.lang.IllegalArgumentException: Compression codec com.hadoop.compression.lzo.LzopCodec not found.
        at org.apache.hadoop.io.compress.CompressionCodecFactory.getCodecClasses(CompressionCodecFactory.java:116)
        at org.apache.hadoop.io.compress.CompressionCodecFactory.(CompressionCodecFactory.java:156)
        at org.apache.hadoop.mapreduce.lib.input.LineRecordReader.initialize(LineRecordReader.java:70)
        at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:451)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:322)
        at org.apache.hadoop.mapred.Child$4.run(Child.java:266)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1278)
        at org.apache.hadoop.mapred.Child.main(Child.java:260)
Caused by: java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzopCodec

你可能感兴趣的:(知识)