【问题标题】:Failed to load native-lzo library when setting up Lzo on Cloudera Hadoop在 Cloudera Hadoop 上设置 Lzo 时无法加载 native-lzo 库
【发布时间】:2016-07-07 06:35:58
【问题描述】:

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

$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.所有datanode都安装了lzop。
2.mapred-site.xml中的JAVA_LIBRARY_PATH设置为/opt/cloudera/parcels/CDH/lib/hadoop/lib/native,其中包含liblzo2.*文件。
3.HADOOP_CLASSPATH 设置为包含 hadoop-lzo.jar 文件的 /usr/local/lib。

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

【问题讨论】:

  • 感谢您的建议!我的集群与此略有不同,因为我使用的 CDH 5.6 与存储库中任何版本的 HADOOP_LZO 包不匹配,而是包含 hadoop-lzo-0.4.15-cdh5 的 GPL EXTRAS 包。 6.0.jar。我想知道他们是否平等?

标签: hadoop cloudera-cdh lzo


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我今天也遇到了这个问题,花了很长时间才弄清楚真正的根本原因是什么。

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

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

    如果你使用的是hadoop-lzo构建的jar,那么你也应该使用从那个库构建的native library,并且最好使用相同版本的source来构建native library。

    如果你使用的是hadoop-gpl-compression项目构建的jar,那么你也应该使用它构建的native library,并且最好使用相同版本的source来构建native library。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多