Hadoop Could not load native gpl library异常解决

2019-03-28 13:32|来源: 网络

Hadoop Could not load native gpl library异常解决

完整异常:

  1. 11/11/07 10:15:02 ERROR lzo.GPLNativeCodeLoader: Could not load native gpl library   
  2. java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path   
  3.     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)   
  4.     at java.lang.Runtime.loadLibrary0(Runtime.java:823)   
  5.     at java.lang.System.loadLibrary(System.java:1028)   
  6.     at com.hadoop.compression.lzo.GPLNativeCodeLoader.<clinit>(GPLNativeCodeLoader.java:32)   
  7.     at com.hadoop.compression.lzo.LzoCodec.<clinit>(LzoCodec.java:71)   
  8.     at java.lang.Class.forName0(Native Method)   
  9.     at java.lang.Class.forName(Class.java:247)   
  10.     at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:943)   
  11.     at org.apache.hadoop.io.compress.CompressionCodecFactory.getCodecClasses(CompressionCodecFactory.java:89)   
  12.     at org.apache.hadoop.io.compress.CompressionCodecFactory.<init>(CompressionCodecFactory.java:134)   
  13.     at com.twitter.elephantbird.mapreduce.input.LzoRecordReader.initialize(LzoRecordReader.java:61)   
  14.     at com.twitter.elephantbird.mapreduce.input.LzoBinaryB64LineRecordReader.initialize(LzoBinaryB64LineRecordReader.java:79)   
  15.     at org.apache.hadoop.mapreduce.lib.input.DelegatingRecordReader.initialize(DelegatingRecordReader.java:80)   
  16.     at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:450)   
  17.     at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:645)   
  18.     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:322)   
  19.     at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:210)   
  20. 11/11/07 10:15:02 ERROR lzo.LzoCodec: Cannot load native-lzo without native-hadoop   
  21. 11/11/07 10:15:02 WARN mapred.LocalJobRunner: job_local_0001   
  22. java.lang.RuntimeException: native-lzo library not available   
  23.     at com.hadoop.compression.lzo.LzopCodec.createDecompressor(LzopCodec.java:91)   
  24.     at com.hadoop.compression.lzo.LzopCodec.createInputStream(LzopCodec.java:76)   
  25.     at com.twitter.elephantbird.mapreduce.input.LzoRecordReader.initialize(LzoRecordReader.java:71)   
  26.     at com.twitter.elephantbird.mapreduce.input.LzoBinaryB64LineRecordReader.initialize(LzoBinaryB64LineRecordReader.java:79)   
  27.     at org.apache.hadoop.mapreduce.lib.input.DelegatingRecordReader.initialize(DelegatingRecordReader.java:80)   
  28.     at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:450)   
  29.     at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:645)   
  30.     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:322)   
  31.     at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:210)

参考http://www.linuxidc.com/Linux/2012-08/67021.htm,里面说是JDK版本原因,要将32位的JDK改成64位. 于是我输入命令查看下JDK版本:java -version.(你可以先通过uname -a查看你的操作系统位数)

得到的结果发现已经是64位,结果如下:

java version "1.6.0_26"

  1. Java(TM) SE Runtime Environment (build 1.6.0_26-b03)   
  2. Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

后来想下自己压根就没有装什么lzo,同时找到了这篇:http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/15776.验证了我的想法,根据里面的提示http://code.google.com/a/apache-extras.org/p/hadoop-gpl-compression/wiki/FAQ?redir=1一步步安装.命令如下:

相关问答

更多
  • Hadoop自带的native包过旧,需要更新而已,替换个即可,进入hadoop目录的native目录替换一下,就可以了,在这里提供一个给你。记得先解压。
  • 我认为问题出在您的/etc/hosts文件中。 确保配置正确。 我的/etc/hosts文件如下所示: 127.0.0.1 localhost 192.168.0.1 master mypcname 192.168.0.18 slave1 192.168.0.12 slave2 192.168.0.17 slave3 为主人和 127.0.0.1 localhost 192.168.0.1 master 192.168.0.18 slave ...
  • libmysqlclient,JDBC连接器和其他与MySQL接口的库是GPL(GPLv2)。 严格阅读许可证表明您需要在GPL下分发源代码。 有FLOSS免除,允许任何开源许可包含libmysqlclient,但这不适用于您。 Sun / Oracle积极地许可连接器库和服务器组件,根据我的经验,它非常昂贵。 您可以使用一些技巧,例如查询代理服务器 - 只需启动一个子进程,它可以将您自己的SQL命令转换为libmysqlclient。 您需要发送代理的来源,但它是一个自包含的部分。 libmysqlcli ...
  • 如果缺少源路径,则必须检查本地计算机上是否存在文件。 但是如果目标文件夹没有丢失,那么首先尝试在HDFS上检查该文件夹是否存在。 为此,您可以通过以下方式打开hadoop HDFS的Web UI :50070 ,然后浏览文件系统 除此之外,您可以通过Command检查文件 hadoop fs -ls / 如果这样可行,则将文件放入以下命令 hadoop fs -put
  • 我假设你在64位CentOS上运行Hadoop。 你看到这个警告的原因是本机Hadoop库$HADOOP_HOME/lib/native/libhadoop.so.1.0.0实际上是在32位上编译的。 无论如何,这只是一个警告,不会影响Hadoop的功能。 如果您想要消除此警告,请下载方法,下载Hadoop的源代码,并在64位系统上重新编译libhadoop.so.1.0.0 ,然后替换32位系统。 这里包含有关如何重新编译源代码的步骤,适用于Ubuntu: http://www.ercoppa.org/L ...
  • 您遇到问题,因为应用程序主服务器无法启动容器并运行该作业。 首先尝试重新启动系统,如果没有更改,则必须更改yarn-site.xml和mapred-site.xml中的内存分配。 使用基本内存设置。 使用以下链接http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide/#yarn-configuration_1 这里 这里 You are having issues because app ...
  • 包括参数-jar和指定一个示例jar解决了我的问题(我再次提到了mrbenchmark jar)。 例如。 hadoop jar build / hadoop-0.20-test.jar mrbench -numRuns 1 -maps 2 -reduces 1 -inputLines 1 -inputType ascending -jar build / hadoop-0.20-test.jar 即使Benchmark声明参数-jar初始化为当前jar,但事实并非如此。 必须指定-jar参数。 Inclu ...
  • 该错误表示权限问题。 hadoop用户需要hadoop文件夹的适当权限。 尝试在终端中运行以下命令: sudo chown -R hadoop /usr/local/Cellar/hadoop/2.3.0/ The error indicates a permissions problem. The hadoop user needs the proper privileges to the hadoop folder. Try running the following in Terminal: sud ...
  • 您始终可以获取源代码。 您的版本的示例配置文件在此处 I finally get that start0() function is a part from java code not a part of hadoop code, so it is just do/create a new thread to run the job on it and for hadoop developing we just need to know that : Thread.start0 eventually cre ...
  • 根据您的输入,您的Hadoop安装似乎工作正常。 有什么问题, hadoop fs -copyFromLocal希望将目录HDFS目录作为目标目录,而不是Hadoop存储其块的本地目录。 所以在你的情况下,命令应该看起来像(例如): sara@ubuntu:/usr/lib/hadoop/hadoop-2.3.0/bin$ hdfs dfs -copyFromLocal /home/sara/Downloads/CA-GrQc.txt /sampleDir/ 其中sampleDir是您使用hadoop ...