hxl 发表于 2017-11-27 09:30

hadoop如何支持LZO压缩

我在网上按照步骤安装了lzo,但是发现用不了,请问大家知道什么原因吗?
我的hadoop版本是2.8.2

报错如下:
hive> select * from tb_provcode_lzo_t;
OK
Failed with exception java.io.IOException:java.io.IOException: No LZO codec found, cannot run.
Time taken: 2.778 seconds

heguangwu 发表于 2017-11-27 14:32

本帖最后由 heguangwu 于 2017-11-27 14:33 编辑

安装后要将lzo的jar文件拷贝到$HADOOP_HOME/share/hadoop/common/lib目录下另外,hive如果不包含hadoop的classpath,也需要将lzo放到hive的对应目录下

heguangwu 发表于 2017-11-27 14:46

使用 "hadoop checknative" 命令可以检查安装结果

hxl 发表于 2017-11-27 14:55

回复 2# heguangwu



这两个目录都是有该jar包的,还是不行.

hadoop下的lib目录
$ pwd
/opt/hadoop/hadoop-2.8.2/share/hadoop/common/lib
$ ls -alhadoop-lzo-0.4.21-SNAPSHOT.jar
-rw-r--r--. 1 hadoop hadoop 188792 Nov 27 01:24 hadoop-lzo-0.4.21-SNAPSHOT.jar

hive下的lib目录
$ pwd
/opt/hive2.3/lib
$ ls -al hadoop-lzo-0.4.21-SNAPSHOT.jar
-rw-r--r--. 1 hadoop hadoop01 188792 Nov 27 01:51 hadoop-lzo-0.4.21-SNAPSHOT.jar

hxl 发表于 2017-11-27 14:56

回复 3# heguangwu


命令结果如下,怎么看呢?
$ hadoop checknative
17/11/27 01:58:28 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
17/11/27 01:58:28 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop:true /opt/hadoop/hadoop-2.8.2/lib/native/libhadoop.so.1.0.0
zlib:    true /lib64/libz.so.1
snappy:true /lib64/libsnappy.so.1
lz4:   true revision:10301
bzip2:   true /lib64/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
$

heguangwu 发表于 2017-11-27 15:18

检查core-site.xml的配置项io.compression.codecs 及 io.compression.codec.lzo.class 是否正确

hxl 发表于 2017-11-27 15:48

回复 6# heguangwu



配置如下:
<property>
    <name>io.compression.codecs</name>
    <value>org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
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>

heguangwu 发表于 2017-11-27 15:53

最后一个检查点,你安装配置lzo之后重启集群没有,如果已经重启了我是看不出问题了

hxl 发表于 2017-11-27 16:07

回复 8# heguangwu

重启了的,都重启很多次了。

heguangwu 发表于 2017-11-27 16:33

完全看不出问题了,lzo我也安装过很多遍,从2.3的版本到2.7的版本都搞过,基本就是这些,抛开hive放一边,你先用mapreduce执行lzo分析看看是否报错,如:
hadoop jar /home/hadoop/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar -Dmapreduce.reduce.tasks=1 -Dmapreduce.output.fileoutputformat.comp
ress=true -Dmapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzoCodec -Dmapreduce.reduce.memory.mb=4096 -input /data/telecontrol/17-11-26/FlumeD
ata.151162* -output /tmp/testoutput -mapper cat-reducer cat

最后一个提醒点,查看如下目录是否存在对应文件:
$ pwd
/home/hadoop/hadoop/lib/native
$ ll
total 5320
-rw-rw-r-- 1 hadoop hadoop 1210788 Aug52016 libhadoop.a
-rw-rw-r-- 1 hadoop hadoop 1487316 Aug52016 libhadooppipes.a
lrwxrwxrwx 1 hadoop hadoop      18 Nov12016 libhadoop.so -> libhadoop.so.1.0.0
-rwxrwxr-x 1 hadoop hadoop716580 Aug52016 libhadoop.so.1.0.0
-rw-rw-r-- 1 hadoop hadoop582128 Aug52016 libhadooputils.a
-rw-rw-r-- 1 hadoop hadoop364972 Aug52016 libhdfs.a
lrwxrwxrwx 1 hadoop hadoop      16 Nov12016 libhdfs.so -> libhdfs.so.0.0.0
-rwxrwxr-x 1 hadoop hadoop229153 Aug52016 libhdfs.so.0.0.0
lrwxrwxrwx 1 hadoop hadoop      16 Nov 27 16:28 liblzo2.so -> liblzo2.so.2.0.0
-rwxr-xr-x 1 hadoop hadoop134072 Nov 27 16:28 liblzo2.so.2.0.0
-rw-r--r-- 1 hadoop hadoop472982 Aug52016 libsnappy.a
-rwxr-xr-x 1 hadoop hadoop   955 Aug52016 libsnappy.la
-rwxr-xr-x 1 hadoop hadoop228145 Aug52016 libsnappy.so.1.3.0
页: [1] 2 3
查看完整版本: hadoop如何支持LZO压缩