首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cloudera Hadoop上设置Lzo时,无法加载本机Lzo库

在Cloudera Hadoop上设置Lzo时,无法加载本机Lzo库
EN

Stack Overflow用户
提问于 2016-07-07 14:35:58
回答 2查看 1.8K关注 0票数 3

我只是遵循Cloudera文档中的步骤,在集群上安装了GPL Extras Parcel,并通过Cloudera Manager配置了HDFS服务。但在尝试读取HDFS上的.lzo文件时出现错误:

代码语言:javascript
复制
$hadoop fs -text /tmp/Lzo/log.txt.lzo 
INFO lzo.GPLNativeCodecLoader: Loaded native gpl library
WARN lzo.LzoCompressor: java.lang.NoSuchFiledError: lzoCompressLevelFunc
ERROR lzo.LzoCodec: Failed to load/initialize native-lzo library
-text: Fatal internal error
java.lang.RuntimeException: native-lzo library not available

我已经读了十几篇文章,知道这是由于JNI加载lzo库失败导致的,但它们都不能很好地解决我的问题。以下是我所做的努力:

1.所有数据节点都安装了lzop。

mapred-site.xml中的2.JAVA_LIBRARY_PATH被设置为/opt/cloudera/parcels/CDH/lib/hadoop/lib/native,,其中包含liblzo2.*文件。

3.HADOOP_CLASSPATH被设置为/usr/local/lib,其中包含hadoop-lzo.jar文件。

我还能做什么?如有任何建议,我们将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2016-07-12 14:54:07

问题解决了!是由java.lang.NoSuchFiledError引起的。Hadoop-lzo-0.4.15没有lzoCompressLevelFunc字段,当我切换到hadoop-lzo0.4.20时,警告和错误都消失了。

票数 2
EN

Stack Overflow用户

发布于 2017-09-01 10:30:27

我今天也遇到了这个问题,花了相当长的时间来找出真正的根本原因是什么。

因此,我想在这里总结一下问题:简而言之,jar和本地库需要兼容,确保这一点的最好方法是从相同版本的源代码生成(构建)它们。

我昨天遇到的问题是,我使用的是hadoop-gpl-compression.jar,但我使用的本地库是从hadoop-lzo构建的。所以这里有一个兼容性问题。我之后做的是从hadoop-gpl-compression项目构建本机库,而不是hadoop-lzo,然后它就可以工作了。

如果您使用的是从hadoop-lzo构建的jar,那么您还应该使用从该库构建的本地库,并且最好使用相同版本的源代码来构建本机库。

如果您使用的是从hadoop-gpl-compression项目构建的jar,那么您还应该使用从它构建的本机库,并且最好使用相同版本的源代码来构建本机库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38238885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档