hadoop位数和系统不匹配报错 util.NativeCodeLoader: Unable to load native-hadoop library for your platform... u

2015-4-17 10:40:04     0 人阅读    

 util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

今天刚把hadoop环境搭建好,master节点 和slaver节点都正常起来,然后想在hdfs文件系统新建一个文件,只是执行了一个最简单 的 hadoop fs -ls
命令,就报错...


第一步:查看linux版本,查看linux系统位数

[jlins@master input]$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

显示结果:32位的linux版本

 

第二步:查看hadoop版本,查看hadoopw位数

[jlins@master native]$ ls -rlt
total 3596
-rwxrwxrwx 1 root root  412566 Nov 21  2013 libhadoop.so.1.0.0
-rwxrwxrwx 1 root root  734066 Nov 21  2013 libhadoop.a
-rwxrwxrwx 1 root root  181210 Nov 21  2013 libhdfs.so.0.0.0
-rwxrwxrwx 1 root root  273514 Nov 21  2013 libhdfs.a
-rwxrwxrwx 1 root root  582080 Nov 21  2013 libhadooputils.a
-rwxrwxrwx 1 root root 1486668 Nov 21  2013 libhadooppipes.a
lrwxrwxrwx 1 root root      16 Apr 13 00:01 libhdfs.so -> libhdfs.so.0.0.0
lrwxrwxrwx 1 root root      18 Apr 13 00:01 libhadoop.so -> libhadoop.so.1.0.0
[jlins@master native]$ file libhadoop.so.1.0.0 
libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

显示结果  64位的hadoop版本,为啥是64位?是因为 hadoop依赖的so文件是用64位系统变异的....


呵呵 ,我真是够了...  谁他妈的知道 hadoop 还要分系统版本..
一想到 32位系统安装了64位软件,我就头痛呀...
以前在华为的时候,安装timesten内存数据库,整天面对  32位 64位来搞,都恶心死了

简单的说:要想运行32位的hadoop ,你必须使用32位系统,安装32位jdk,同理
          要想运行64位的hadoop,你必须使用64位系统,安装64位jdk...

          如果混用了,呵呵,后果不知道..

第三步:舱室下载一个32位的本地库,直接替换64位的本地库.
      
网上下载一个32位的本地库..替换本地库之后还是报错,于是添加调试信息

export HADOOP_ROOT_LOGGER=DEBUG,console
[jlins@master hadoop]$ hadoop fs -text /test/data/origz/access.log.gz

15/04/13 22:42:59 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...
15/04/13 22:42:59 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /opt/hadoop/hadoop-2.2.0/lib/native/libhadoop.so: /opt/hadoop/hadoop-2.2.0/lib/native/libhadoop.so: file too short
15/04/13 22:42:59 DEBUG util.NativeCodeLoader: java.library.path=/opt/hadoop/hadoop-2.2.0/lib/native
15/04/13 22:42:59 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

  错误的信息很明显,应该是按照64位的方式去读取so文件了...或者hadoop哪个地方是64导致的..
  这种方式不可行

第四步:重新删除目前已经安装和配置好的hadoop,备份配置文件,重新安装一个完全32的软件...
   
 

  [jlins@master hadoop]$ hadoop fs -text /test/data/origz/access.log.gz
 org.apache.hadoop.security.UserGroupInformation$UgiMetrics.loginFailure with annotation @org.apache.hadoop.metrics2.annotation.Metric(valueName=Time, about=, value=[Rate of failed kerberos logins and latency (milliseconds)], always=false, type=DEFAULT, sampleName=Ops)
15/04/13 23:58:56 DEBUG impl.MetricsSystemImpl: UgiMetrics, User and group related metrics
15/04/13 23:58:56 DEBUG security.Groups:  Creating new Groups object
15/04/13 23:58:56 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...
15/04/13 23:58:56 DEBUG util.NativeCodeLoader: Loaded the native-hadoop library
15/04/13 23:58:56 DEBUG security.JniBasedUnixGroupsMapping: Using JniBasedUnixGroupsMapping for Group resolution

  

运行后貌似没有问题...准备启动hadoop进行测试...
 
第五步:重新格式化hdfs  hdfs namenode -format ,运行hadoop测试 

 jlins@master sbin]$ ./start-all.sh 

 


编译hadoop源代码 ::

http://download.csdn.net/download/u014133453/7825985   hadoop-2.2.0-src.tar.gz
http://download.csdn.net/download/px_dn/7414673   protobuf-2.5.0.tar.gz

http://download.csdn.net/download/zhu_9527/7079453  apache-maven-3.2.1-bin.tar.gz
ttp://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz   cmake-2.8.12.2.tar.gz  


原文地址:http://www.itmmd.com/201504/702.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

  上一篇
下一篇  centos 6.4 安装和配置hadoop

精彩回复
发表评论
姓名: