hadoop-2.2.0 配置完成,但是运行hadoop老是警告:
WARN util.NativeCodeLoader: Unable to loadnative-hadoop library for your platform... using builtin-java classes whereapplicable
这是由于本地库与64位系统版本不一致导致。
查看本地库:
hadoop@hhost01:~/hadoop-2.2.0/lib/native$ file *
libhadoop.a: current ar archive
libhadooppipes.a: current ar archive
libhadoop.so: symbolic link to `libhadoop.so.1.0.0'
libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x9eb1d49b05f67d38454e42b216e053a27ae8bac9, not stripped
libhadooputils.a: current ar archive
libhdfs.a: current ar archive
libhdfs.so: symbolic link to `libhdfs.so.0.0.0'
libhdfs.so.0.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x5f6c9ec21598be5342111b48fc692e7858f21afc, not stripped
可以看到上面是32位的,而我的系统是64位的
解决办法:重新编译hadoop源码,然后:
mvn package -Pdist,native -DskipTests -Dtar
将/home/hadoop/software/hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/lib/native文件夹下文件替换服务器上的native下文件