Hadoop压缩: "Loaded native gpl library" but "Failed to load/initialize native-lzo library"

标签 hadoop lzo

在多次尝试为 hadoop 安装 Lzo 压缩之后,我需要帮助,因为我真的不知道为什么它不起作用。

我在 CentOs 6 上使用 hadoop 1.0.4。我尝试过 http://opentsdb.net/setup-hbase.html , https://github.com/kevinweil/hadoop-lzo和其他一些,但我仍然收到错误:

13/07/03 19:52:23 INFO lzo.GPLNativeCodeLoader:已加载 native gpl 库 13/07/03 19:52:23 警告 lzo.LzoCompressor:java.lang.NoSuchFieldError:workingMemoryBuf

13/07/03 19:52:23 错误 lzo.LzoCodec:无法加载/初始化 native lzo 库

即使加载了 native gpl。我已经根据下面的链接更新了我的 mapred-site 和 core-site,我已将库复制/粘贴到正确的路径中(仍然根据链接)。

真正的问题是 lzo 测试在名称节点上运行:

13/07/03 18:55:47 INFO lzo.GPLNativeCodeLoader:已加载 native gpl 库 13/07/03 18:55:47 INFO lzo.LzoCodec:已成功加载并初始化native-lzo库[hadoop-lzo rev]

我尝试在 haddop-env.sh 中设置多个路径,但似乎没有正确的解决方案... 所以,如果您有任何想法,请链接...?我真的很感兴趣

[编辑]一周后,我仍在努力使其发挥作用。 我尝试过 sudhirvn.blogspot.fr/2010/08/hadoop-lzo-installation-errors-and.html,但是删除所有 Lzo 和 gpl 压缩库,然后进行 nez 安装一点也不好。

这是由于我的 hadoop 核心版本所致吗?是否可以同时拥有hadoop-core-0.20和hadoop-core-1.0.4?我应该在 0.20 hadoop 上编译 Lzo 才能使用 lzo 吗? 顺便说一句,我已经尝试像这样编译 hadoop-lzo :

CLASSPATH=/usr/lib/hadoop/hadoop-core-1.0.4.jar CFLAGS=-m64 CXXFLAGS=-m64 ant 编译原生 tar

如果它有帮助,完整的错误是:

    INFO lzo.GPLNativeCodeLoader: Loaded native gpl library
    WARN lzo.LzoCompressor: java.lang.NoSuchFieldError: workingMemoryBuf
    ERROR lzo.LzoCodec: Failed to load/initialize native-lzo library
    INFO lzo.LzoIndexer: [INDEX] LZO Indexing file test/table.lzo, size 0.00 GB...
    WARN snappy.LoadSnappy: Snappy native library is available
    INFO util.NativeCodeLoader: Loaded the native-hadoop library
    INFO snappy.LoadSnappy: Snappy native library loaded
    Exception in thread "main" java.lang.RuntimeException: native-lzo library not available
            at com.hadoop.compression.lzo.LzopCodec.createDecompressor(LzopCodec.java:87)
            at com.hadoop.compression.lzo.LzoIndex.createIndex(LzoIndex.java:229)
            at com.hadoop.compression.lzo.LzoIndexer.indexSingleFile(LzoIndexer.java:117)
            at com.hadoop.compression.lzo.LzoIndexer.indexInternal(LzoIndexer.java:98)
            at com.hadoop.compression.lzo.LzoIndexer.index(LzoIndexer.java:52)
            at com.hadoop.compression.lzo.LzoIndexer.main(LzoIndexer.java:137)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

我真的很想使用 lzo,因为我必须在一个相当小的集群(5 个节点)上处理非常大的文件。拥有可分割的压缩文件可以使其运行速度非常快。 欢迎提出任何意见或想法。

最佳答案

我遇到了完全相同的问题,最终通过随机选择一个数据节点并检查 lzop 是否安装正确来解决它。

如果不是,我就这么做了:

sudo apt-get install lzop

假设您正在使用基于 Debian 的软件包。

关于Hadoop压缩: "Loaded native gpl library" but "Failed to load/initialize native-lzo library",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17454108/

相关文章:

hadoop - hsync() 不适用于 SequenceFile Writer

scala - 无法从HDP 3中具有超过25列的Spark数据框中加载配置单元表

python - 使用Python 2.7/python-lzo 1.11解压缩MiniLZO字符串

python - 使用 mrjob 处理 LZO 序列文件

java - 如何解压缩 lzo_deflate 文件?

java - 用于Spark提交的本地或远程jar

hadoop - 有没有开源的内存MapReduce技术

amazon-s3 - 在 AWS EMR 上的 Hadoop 输出上使用 LZO 时,它是否为文件(存储在 S3 上)编制索引以供将来自动拆分?

java - 如何从Pig Latin向用户定义的函数发送可变大小的输入

hadoop:lzo 压缩的自动可分割输出