源博客的内容在: 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,变成了hadoop-lzo-master.zip,里面的内容都一样,只是压缩方式不同而已。
./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 (注意红色字体):
mapred-site.xml:
注意:如果是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时没有报错,内容是:
然后加入optional.jar,还是这样的提示。我就把ant删除了,然后从apache ant的官网下载了一个ant,版本是:apache-ant-1.9.4。
用这个ant后,在执行,就报错了。报的是:
内容是:[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
在最后加上一行
如图:
然后在执行, ~/apache-ant-1.9.4/bin/ant compile-native tar,就编译成功了。
感动!!!!
2014年6月26日追加
core-site.xml中的配置
还得外加一个配置:
不然就会报错:
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.
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