解决:运行sbin下的start-hdfs.sh时报WARN util.NativeCodeLoader: Unable to load native-hadoop

一开始按照网上的教程,修改 hadoop-env.sh 内容如下:

export JAVA_HOME=/root/training/jdk1.8.0_144
export HADOOP_HOME=/root/training/hadoop-2.7.3
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

修改 yarn-env.sh 内容如下:

export JAVA_HOME=/root/training/jdk1.8.0_144
export HADOOP_HOME=/root/training/hadoop-2.7.3
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

但是并没有什么卵用。

查看 jdk 版本:java -version 发现 jdk 是 32 位的(没写 64-bit 就是 32位):

java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) Client VM (build 25.161-b12, mixed mode)

ps:博主买的 32 位的阿里云的服务器

进入 /hadoop-2.7.3/lib/native 目录,执行 file libhadoop.so.1.0.0 查看 hadoop 位数:

libhadoop.so.1.0.0: ELF 64-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, 
BuildID[sha1]=9bd4b19e387df605b2424e45a253e016c9bae87a, not stripped

发现 hadoop 是 64 位的!!!

于是怀疑是 hadoop 版本与 jdk 版本不匹配造成的,当时用的 hadoop 是 2.7.3 版本,百度知道 hadoop 从 2.5.0 版本开始已经设定为 64 位,于是换了低版本的 2.2.0,重新安装修改配置文件,启动 hadoop 问题解决。

hadoop 所有版本的下载地址:Index of /dist/hadoop/common

关注我的微信公众号(曲健磊的个人随笔),观看更多精彩内容:
解决:运行sbin下的start-hdfs.sh时报WARN util.NativeCodeLoader: Unable to load native-hadoop_第1张图片

你可能感兴趣的:(【hadoop】,hadoop专场)