Hadoop安装完以后,经常会提示一下警告:
Java HotSpot(TM) Client VM warning: You have loaded library /home/snow/hadoop/hadoop - 2.7.3/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'. 18/01/12 16:37:59 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
详细信息,如下图:
根据上图得知,Java成功加载了lib库,但是为什么还是存在警告呢!是不是没有配置lib库的,还是lib库版本不正确(32bit或64bit),我们需要先确定当前系统的位数、JVM位数、和lib库的位数。
解决办法:
# 查看系统版本 [snow@learn ~]$ uname -a Linux learn 2.6.32-358.el6.i686 #1 SMP Thu Feb 21 21:50:49 UTC 2013 i686 i686 i386 GNU/Linux # 查看JVM版本信息 [snow@learn ~]$ java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode) # 查看hadoop native lib文件信息 [snow@learn bak]$ 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
从上面得知,操作系统和JVM都是32bit的,但是Hadoop的native lib是64bit。因此不兼容,需要你去下载hadoop 32bit的native lib库。然后替换当前64bit的库文件。