【发布时间】:2013-07-03 17:06:08
【问题描述】:
在几次尝试为 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: Loaded native gpl library
13/07/03 19:52:23 WARN lzo.LzoCompressor: java.lang.NoSuchFieldError: workingMemoryBuf
13/07/03 19:52:23 ERROR lzo.LzoCodec: Failed to load/initialize native-lzo library
即使加载了原生 gpl。我已经根据下面的链接更新了我的 mapred-site 和 core-site,我已经在正确的路径中复制/粘贴了库(仍然根据链接)。
真正的问题是 lzo 测试在 namenode 上工作:
13/07/03 18:55:47 INFO lzo.GPLNativeCodeLoader: Loaded native gpl library
13/07/03 18:55:47 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev ]
我尝试在 haddop-env.sh 中设置多个路径,但似乎没有正确的解决方案... 所以,如果你有任何想法,链接...?我真的很感兴趣
[编辑] 一周后,我仍在努力使其正常运行。 我已经尝试过 sudhirvn.blogspot.fr/2010/08/hadoop-lzo-installation-errors-and.html 但删除所有 Lzo 和 gplcompression 库然后进行 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 compile-native 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 个节点)上处理非常大的文件。拥有可拆分的压缩文件可以使它运行得非常快。 欢迎每一个评论或想法。
【问题讨论】:
-
实际上我通过安装正确安装 LZO 的打包 hadoop 解决方案(使用 HDP 的 Ambari)“解决了”它。但我仍然不知道这个问题的根源。
-
回复:您已删除的答案——在这种情况下,“链接”实际上与符号链接无关,而是与如何解析本地编译的共享对象中对外部库函数的引用有关。
-
你能在答案中多写一些关于这个问题的内容吗?