首页 > 其他 > 详细

lzo安装说明

时间:2014-02-23 08:14:43      阅读:1023      评论:0      收藏:0      [点我收藏+]

lzo安装说明

安装环境说明:

本机系统为centos 6.4 64位版、hadoop版本为0.20.2,在此环境下分别安装lzo(lzo-2.06.tar.gz)和hadoop-lzo(hadoop-lzo-master.zip),另外要确保机器安装了ant。本机是在伪分布式下进行安装的,如果是在全分布式下进行安装,只需要在namenode和datanode分别进行相同的安装就可以了。

一、lzo的安装

1.下载lzo-2.06.tar.gz:

http://download.csdn.net/detail/u012875880/6949197

2.解压

tar -zxvf lzo-2.06.tar.gz

3.进入解压后的目录:

cd lzo-2.06

4.编译参数配置:

本例lzo安装在/usr/local/lzo-2.06目录下。

mkdir /usr/local/lzo-2.06 

./configure --enable-shared --prefix=/usr/local/lzo-2.06

5.编译并安装:

make && make install

6.进入lzo的安装目录:

cd /usr/local/lzo-2.06

7.将lib目录下的库文件分别拷贝至/usr/lib64目录以及$HADOOP_HOME/lib/native/Linux-amd64-64/下:

cp lib/* /usr/lib64/

cp lib/* $HADOOP_HOME/lib/native/Linux-amd64-64/

注:(1).如果你的机器是32位系统则将库文件分别拷贝到/usr/lib和$HADOOP_HOME/lib/native/Linux-i386-32目录下。

           可以通过uname -a查看当前系统位数

       (2).lib目录下的库文件将来在使用过程中会被Hadoop(就是Java程序)通过JNI调用(确切的说liblzo*库文件会被后面的libgplcompression*库文件调用,libgplcompression*库文件被才回被Java程序直接调用)。

二、hadoop-lzo的安装:

1.下载hadoop-lzo:

可以到http://download.csdn.net/detail/u012875880/6949209进行下载hadoop-lzo-master.zip

2.解压:

unzip hadoop-lzo-master.zip

3.设置环境变量:

vim /etc/profile

export C_INCLUDE_PATH=/usr/local/lzo-2.06/include 
export LIBRARY_PATH=/usr/local/lzo-2.06/lib 

4.编译java工程:

进入压缩目录:

cd hadoop-lzo-master

ant compile-native tar
编译成功后,会在当前目录下生成一个build目录,里面有我们需要的jar文件以及库文件。

注:如果编译过程中出现

[exec] checking lzo/lzo2a.h presence... no
[exec] checking for lzo/lzo2a.h... no
[exec] configure: error: lzo headers were not found...
[exec] gpl-compression library needs lzo to build.
[exec]  Please install the requisite lzo development package.

提示,则说么编译失败,出现这种现象的原因是环境变量没有设置或者设置错误,请参看第3步,设置一下你的环境变量。

如果,编译过程中出现了其他错误情况,请参考官方的FAQ:https://github.com/twitter/hadoop-lzo

5.拷贝生成的build目录下的jar文件到$HADOOP_HOME/lib目录下:

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

6.分别拷贝build目录下的库文件至/usr/lib64目录以及$HADOOP_HOME/lib/native/Linux-amd64-64/下:

cp build/native/Linux-amd64-64/lib/* /usr/lib64

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

注:(1).如果你的机器是32位系统则将库文件分别拷贝到/usr/lib和$HADOOP_HOME/lib/native/Linux-i386-32目录下。

           可以通过uname -a查看当前系统位数

       (2).lib目录下的库文件将来在使用过程中会被Hadoop(就是Java程序)通过JNI直接调用(而该库文件则会去调用步骤一产生的liblzo*库文件)。

7.更改相关配置文件:

(1).core-site.xml文件

   

<property>
    <name>io.compression.codecs</name>
             <value>
                          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
            </value>
   </property>

  <property>
    <name>io.compression.codec.lzo.class</name>
    <value>com.hadoop.compression.lzo.LzoCodec</value>
  </property>

(2).mapred-site.xml文件:

  <property>
    <name>mapreduce.map.output.compress</name>
    <value>true</value>
  </property>

	<property>
    <name>mapreduce.map.output.compress.codec</name>
    <value>com.hadoop.compression.lzo.LzoCodec</value>
  </property>

  <property>
    <name>mapred.child.env</name>
    <value>JAVA_LIBRARY_PATH=/home/inoknok_hdp/hadoop-1.0.4/lib/native/Linux-amd64-64/</value>
  </property>


三、常见错误以及额外说明

1.必须保证你的/usr/lib64和$HADOOP_HOME/lib/native/Linux-amd64-64/目录下有如下库文件:

liblzo2.a  liblzo2.la  liblzo2.so  liblzo2.so.2  liblzo2.so.2.0.0

libgplcompression.a   libgplcompression.so    libgplcompression.so.0.0.0
libgplcompression.la  libgplcompression.so.0

如果缺失,会出如下错误提示:

(1)缺失libgplcompersion*库文件:

14/02/21 14:03:49 ERROR lzo.GPLNativeCodeLoader: Could not load native gpl library
java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at com.hadoop.compression.lzo.GPLNativeCodeLoader.<clinit>(GPLNativeCodeLoader.java:31)
at com.hadoop.compression.lzo.LzoCodec.<clinit>(LzoCodec.java:60)

(2).有libgplcompersion*库文件但缺失liblzo*库文件:

14/02/21 02:33:04 INFO lzo.GPLNativeCodeLoader: Loaded native gpl library
14/02/21 02:33:04 WARN lzo.LzoCompressor: java.lang.UnsatisfiedLinkError: Cannot load liblzo2.so.2 (liblzo2.so.2: cannot open shared object file: No such file or directory)!

注:注意你的系统的位数及相应的目录。

2.关于hadoop-gpl-compression的说明:

hadoop-lzo-xxx的前身是hadoop-gpl-compression-xxx,之前是放在google code下管理,地址:http://code.google.com/p/hadoop-gpl-compression/ .但由于协议问题后来移植到github上,也就是现在的hadoop-lzo-xxx,github,链接地址:https://github.com/kevinweil/hadoop-lzo.网上介绍hadoop lzo压缩都是基于hadoop-gpl-compression的介绍.而hadoop-gpl-compression还是09年开发的,跟现在hadoop版本已经无法再完全兼容,会发生一些问题。

我安装的hadoop中的lib目录下自带有hadoop-gpl-compression-0.1.0.jar,而我们在上面向$HADOOP_HOME/lib目录下copy过了hadoop-lzo-0.4.15.jar。

这两个jar文件其实是一个东西(如果你查看他们的包结构和api,基本一致),只不过一个是hadoop-gpl-compression对应的老版本的jar,一个是hadoop-lzo对应的新版本的jar。我们必须把他们俩删除一个,我建议删除hadoop-gpl-compression-0.1.0.jar,因为它比较老,和现在的hadoop容易发生不兼容问题。如果不删除,会发生包冲突,hadoop会默认装载使用hadoop-gpl-compression-0.1.0.jar,而我们向$HADOOP_HOME/lib/native/Linux-amd64-64/目录下copy的则是hadoop-lzo对于的库文件(libgplcomperssion*),这样,会发生libgplcomperssion*库文件加载/初始化失败问题,详细错误提示如下:

INFO lzo.GPLNativeCodeLoader: Loaded native gpl library  
14/02/21 02:33:04 WARN lzo.LzoCompressor: java.lang.NoSuchFieldError: workingMemoryBuf  
14/02/21 02:33:04 ERROR lzo.LzoCodec: Failed to load/initialize native-lzo library

3.关于Java程序通过JNI调用库文件说明:

当你在本地不通过hadoop使用lzo时,Java程序调用的是/usr/lib64目录下的库文件,而当你通过hadoop使用lzo时,hadoop调用的是$HADOOP_HOME/lib/native/Linux-amd64-64/目录下的库文件。

注:实际调用库文件路径,由你自己安装路径决定。

lzo安装说明

原文:http://blog.csdn.net/zhu_xun/article/details/19687171

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!