以前装lzo的时候就磕磕绊绊,但总算能好使,最近又由于要装lzo而烦恼了一阵子。现在就记录下,省得来日再查。
开始之前上网查到的都是hadoop0.20装lzo的,有时候不看版本就直接操作了,结果自己还真就就掉到了这样一个坑里。后面再说这个坑,先说说怎么装。其实在 https://github.com/twitter/hadoop-lzo 已经说的很清楚了,只是自己当时懒得去仔细看那单词,总期待国人能帮我解决问题,但总是事与愿违。整理下https://github.com/twitter/hadoop-lzo 这里的过程应该是这样的。
1、先到这里下载 http://www.oberhumer.com/opensource/lzo/ lzo的最新发布版
2、配置 ./configure --enable-shared --prefix /usr/local/lzo-2.06
3、安装 make && sudo make install
4、按照传统所有的liblzo*往/usr/lib下拷一份
接下来编译 hadoop-lzo ,先要从 https://github.com/twitter/hadoop-lzo/archive/master.zip 这下下来zip包,解压。然后
1、设置这个环境变量
C_INCLUDE_PATH=/usr/local/lzo-2.06/include
LIBRARY_PATH=/usr/local/lzo-2.06/lib
2、运行 mvn clean test
3、然后到target/native/Linux-amd64-64/lib下找到一堆库文件libgpl*, https://github.com/twitter/hadoop-lzo 这里说要设置环境变量,我没尝试。我是这样做的,把libgpl*拷贝到 $HADOOP_HOME/lib/native/Linux-amd64-64下
4、https://github.com/twitter/hadoop-lzo 这里就到上面几步,可是还有一个它没写就是 我们需要继续与行 mvn clean package ,运行结束后在target下找到 hadoop-lzo-0.4.18-SNAPSHOT.jar ,把它拷贝到$HADOOP_HOME/lib下。说说之前的那个坑,前面装的时候糊装,在$HADOOP_HOME下有一个 叫hadoop-gpl*的jar包,虽然我把 hadoop-lzo-0.4.18-SNAPSHOT.jar 拷贝过去了,但是使用 hive --rcfilecat 察看使用lzo压缩过的rcfile时老是不能正确解压。后来查到一片博客说 hadoop-gpl-compression-xx和 hadoop-lzo** 不兼容云云,才恍然大悟,然后将之前安装的$HADOOP_HOME/lib下的hadoop-gpl-compresion-xxx删除,问题解决!
至此其实lzo已经完成,在就是配置下hadoop了,这里就不说了。
同时如果在eclipse安装了hadoop的插件的话,如果直接运行输入是lzo压缩的文件是不行的,会提示找不到lzo class 或者 gpl/lzo native lib找不到,lzo class找不到需要单独引入 hadoop-lzo-0.4.18-SNAPSHOT.jar ,提示gpl/lzo native lib找不到,需要到build path的library里 找到hadoop-lzo-0.4.18-SNAPSHOT.jar 设置它的native path为 $HADOOP_HOME/lib/native/Linux-amd64-64而不是网上说的/usr/local/lib,这把我坑死了,我设置了死活不好使,自己琢磨琢磨改成这个才好。