`
conkeyn
  • 浏览: 1529631 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Hadoop Could not load native gpl library异常解决

 
阅读更多

转载自:http://guoyunsky.iteye.com/blog/1237327

 

 

ERROR lzo.GPLNativeCodeLoader: Could not load native gpl library  
java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path  
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)  
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)  
    at java.lang.System.loadLibrary(System.java:1028)  
    at com.hadoop.compression.lzo.GPLNativeCodeLoader.<clinit>(GPLNativeCodeLoader.java:32)  
    at com.hadoop.compression.lzo.LzoCodec.<clinit>(LzoCodec.java:71)  
    at java.lang.Class.forName0(Native Method)  
    at java.lang.Class.forName(Class.java:247)  
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:943)  
    at org.apache.hadoop.io.compress.CompressionCodecFactory.getCodecClasses(CompressionCodecFactory.java:89)  
    at org.apache.hadoop.io.compress.CompressionCodecFactory.<init>(CompressionCodecFactory.java:134)  
    at com.twitter.elephantbird.mapreduce.input.LzoRecordReader.initialize(LzoRecordReader.java:61)  
    at com.twitter.elephantbird.mapreduce.input.LzoBinaryB64LineRecordReader.initialize(LzoBinaryB64LineRecordReader.java:79)  
    at org.apache.hadoop.mapreduce.lib.input.DelegatingRecordReader.initialize(DelegatingRecordReader.java:80)  
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:450)  
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:645)  
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:322)  
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:210)  
11/11/07 10:15:02 ERROR lzo.LzoCodec: Cannot load native-lzo without native-hadoop  
11/11/07 10:15:02 WARN mapred.LocalJobRunner: job_local_0001  
java.lang.RuntimeException: native-lzo library not available  
    at com.hadoop.compression.lzo.LzopCodec.createDecompressor(LzopCodec.java:91)  
    at com.hadoop.compression.lzo.LzopCodec.createInputStream(LzopCodec.java:76)  
    at com.twitter.elephantbird.mapreduce.input.LzoRecordReader.initialize(LzoRecordReader.java:71)  
    at com.twitter.elephantbird.mapreduce.input.LzoBinaryB64LineRecordReader.initialize(LzoBinaryB64LineRecordReader.java:79)  
    at org.apache.hadoop.mapreduce.lib.input.DelegatingRecordReader.initialize(DelegatingRecordReader.java:80)  
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:450)  
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:645)  
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:322)  
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:210)

 

这里要感谢google,但搜索不是那么容易.网上一些解决方法并不全面.我这里整理下.

  首先搜到的是http://p-x1984.iteye.com/blog/1157145,里面说是JDK版本原因,要将32位的JDK改成64位. 于是我输入命令查看下JDK版本:java -version.(你可以先通过uname -a查看你的操作系统位数)

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

    java version "1.6.0_26"

Java(TM) SE Runtime Environment (build 1.6.0_26-b03)  
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一步步安装.命令如下:

    1.先安装hadoop-gpl-compression

     1)下载(我一般都会进入自己的下载目录,命令:cd $HOME/Downloads,由你自己决定):

         wget http://hadoop-gpl-compression.googlecode.com/files/hadoop-gpl-compression-0.1.0-rc0.tar.gz

      2)解压

         tar -xvf hadoop-gpl-compression-0.1.0-rc0.tar.gz

      3)将解压好的hadoop-gpl-compression-0.1.0.jar移到你的hadoop/lib目录(我这里是$HADOOP_HOME/lib

,如果没有请设置$HADOOP_HOME,或者替换成你的hadoop目录)下:

        mv hadoop-gpl-compression-0.1.0/hadoop-gpl-compression-0.1.0.jar $HADOOP_HOME/lib/

    4)把库文件拷贝到hadoop的本地库目录中

      mv hadoop-gpl-compression-0.1.0/lib/native/Linux-i386-32/* $HADOOP_HOME/lib/native/Linux-i386-32/  

      mv hadoop-gpl-compression-0.1.0/lib/native/Linux-amd64-64/* $HADOOP_HOME/lib/native/Linux-amd64-64/ 

 

  2.安装lzo类库

      1)安装g++和gcc

          sudo apt-get install g++

          sudo apt-get install gcc

      2)下载lzo

          wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz

      3)解压

          tar -xvf lzo-2.03.tar.gz 

      4)编译安装

          cd lzo-2.03

          sudo ./configure  

          sudo make  

          sudo make install 

 

     Eclipse调试相关源码时,如果还报以上错误,那有可能是Eclipse获取不到/usr/local/lib.有两种解决方法:

     一种是将/usr/local/lib放入你的环境变量.如: vi ~./bashrc,加入以下行:

    

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

 

    然后通过命令启动Eclipse,也就是输入eclipse,当然前提是要你设置了Path.或者重启系统;

    还有一种是将Native Library Location设置进你的工程,具体做法是.

    右击你的工程->选择Properties->选择左边的Java Build Path->然后在右边的Libraries下找到hadoop-lzo-xxx.jar.

    点击该jar,双击该jar下的Native Library Location,设置为/usr/local/lib即可.如此就无需重启系统之类的.但长期来看还是建议第一种方法,设置环境变量,省得每次都需要设置

 

import java.io.File;
import java.io.FileInputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionOutputStream;
import org.apache.hadoop.util.ReflectionUtils;

public class StreamCompressor {

	public static void main(String[] args) throws Exception {
		String cdoecClassName = args[0];
		FileInputStream in = new FileInputStream(new File("/home/conkeyn/jar/text1.txt"));
		Class<?> codecClass = Class.forName(cdoecClassName);
		Configuration conf = new Configuration();
		CompressionCodec codec = (CompressionCodec) ReflectionUtils.newInstance(codecClass, conf);
		CompressionOutputStream out = codec.createOutputStream(System.out);
		IOUtils.copyBytes(in, out, 4096, false);
		out.finish();
	}
}

 

  • 大小: 54.2 KB
分享到:
评论

相关推荐

    Unable to load native-hadoop library for your platform...

    Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 1. 下载文件native.rar 并解压 2. 用SecureFX 上传, 替换native目录下文件,选择二进制文件上传。 3. ...

    hadoop 2.8.0 macOS native library

    安装hadoop启动之后总有警告:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 原因: Apache提供的hadoop本地库是32位的,而在64位的服务器上就会有问题...

    hadoop2.x native library64位

    标题提到的“hadoop2.x native library64位”正是为了解决这个问题,它是专门为64位操作系统编译的Hadoop本地库。 通常,Hadoop的本地库包含了Java Native Interface (JNI) 库,这些库实现了Hadoop在Java层无法直接...

    hadoop2.7.6 winutil,NativeIO类

    3. 如果是Java Native Interface (JNI) 错误,检查`java.library.path`系统属性是否指定了`libwinutils.lib`所在的目录。 4. 检查`winutils.exe`是否有执行权限,以及`libwinutils.lib`是否被Java加载器找到。 在...

    hadoop-2.7.2的native包-含snappy (Centos 7)

    编译环境:centos 7 + hadoop-2.7.2 +jdk1.8.0_152...含snappy,里面有几个文件是软连接,是指向当前文件夹的文件的,如果失效自己重新软连接一下

    Hadoop 启动WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using

    搭建hadoop 环境时遇到启动异常告警问题 “WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable” 上来不多说,百度收集些相关...

    hadoop 2.5.2 64位native包

    hadoop 2.5.2 64位native包

    hadoop.dll 文件,解决报错所需文件

    报错:java.lang.Exception: java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 所需文件

    Hadoop 2.2.0 64位native文件(重编译)

    Hadoop 2.2.0 是一个重要的分布式计算框架,主要设计用于处理和存储大量数据。这个64位的native文件是Hadoop针对64位Linux操作系统编译的一...在遇到与native库相关的问题时,更新或替换这些文件是解决问题的有效途径。

    mac hadoop2.6.0 lib/native

    mac下Hadoop native library,用于解决报错:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。再次说明,本版本只适用于mac ...

    win10-hadoop3.0.0或其他版本 Unable to load native-hadoop library 缺失文件

    hadoop 3.0.0 或者其他版本 报错Unable to load native-hadoop library时,放到c:/system32就可以

    hadoop-2.7.7-native.tar.gz

    在Hadoop 2.7.7版本中,`hadoop-2.7.7-native.tar.gz`是一个重要的组件,包含了Hadoop运行所需的本地库,这些库主要为Hadoop提供了对硬件级别的优化和支持,尤其是对于数据压缩和I/O操作。 **Hadoop Native ...

    hadoop_64_native_lib

    解决unable to load native library的问题 mac brew install hadoop方式安装的hadoop没有lib文件夹 官方下载的hadoop包是32位的在64位机器需要编译后才可以 将lib文件放到hadoop目录中即可

    hadoop-3.1.3-mac-native_lib.zip

    本压缩包文件“hadoop-3.1.3-mac-native_lib.zip”专门针对macOS系统,包含了在macOS环境下编译Hadoop 3.1.3源码后得到的本地库(native library)。这些本地库对于解决macOS用户在安装或运行Hadoop时可能出现的因...

    hadoop2.8.1 native for macOS10

    WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Found 2 items 解决方法是下载hadoop源代码重新编译, 但中间需要下载安装...

    hadoop-native-64-2.6.0.zip

    Hadoop使用过程报错:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...解决 下载过后把tar包解压在hdoop的lib/native下即可

    hadoop 2.4.1 64位native包

    hadoop 2.4.1 64位native包

    hadoop-2.7.5-native 包

    这个“hadoop-2.7.5-native”包是你手动编译的针对Hadoop 2.7.5版本的本地库,这些库对于Hadoop在Linux环境下的优化运行至关重要。 Hadoop Native库主要包含以下组件: 1. **JNI接口**:Java Native Interface ...

    org.apache.hadoop.io.nativeio

    必须将此jar包放在org.apache.hadoop.io包下,否则无法正常覆盖使用

    hadoop2.2.0-lib-native-macos.zip

    引入了一套专门为64位操作系统设计的本地库(native libraries),这个zip文件“hadoop2.2.0-lib-native-macos.zip”就是为了解决在Mac OS上运行Hadoop时可能会遇到的“cannot load native library”错误。...

Global site tag (gtag.js) - Google Analytics