在第一次格式化hadoop的时候,可能会出现以下错误信息:
- 14/08/1007:07:57WARNutil.NativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswhereapplicable
- Stoppingnamenodeson[JavaHotSpot(TM)64-BitServerVMwarning:Youhaveloadedlibrary/home/hadoop/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0whichmighthavedisabledstackguard.TheVMwilltrytofixthestackguardnow.
- It'shighlyrecommendedthatyoufixthelibrarywith'execstack-c<libfile>',orlinkitwith'-znoexecstack'.
- cluster1]
- sed:-eexpression
- -c:Unknownciphertype'cd'
- ^Ccluster1:stoppingnamenode
- cluster1:stoppingdatanode
- VM:ssh:CouldnotresolvehostnameVM:Nameorservicenotknown
- stack:ssh:Couldnotresolvehostnamestack:Nameorservicenotknown
- warning::ssh:Couldnotresolvehostnamewarning::Nameorservicenotknown
- will:ssh:Couldnotresolvehostnamewill:Nameorservicenotknown
- which:ssh:Couldnotresolvehostnamewhich:Nameorservicenotknown
- fix:ssh:Couldnotresolvehostnamefix:Nameorservicenotknown
- disabled:ssh:Couldnotresolvehostnamedisabled:Nameorservicenotknown
- have:ssh:Couldnotresolvehostnamehave:Nameorservicenotknown
- 64-Bit:ssh:Couldnotresolvehostname64-Bit:Nameorservicenotknown
- guard:ssh:Couldnotresolvehostnameguard:Nameorservicenotknown
- HotSpot(TM):ssh:CouldnotresolvehostnameHotSpot(TM):Nameorservicenotknown
- Java:ssh:CouldnotresolvehostnameJava:Nameorservicenotknown
- VM:ssh:CouldnotresolvehostnameVM:Nameorservicenotknown
- stack:ssh:Couldnotresolvehostnamestack:Nameorservicenotknown
- The:ssh:CouldnotresolvehostnameThe:Nameorservicenotknown
- recommended:ssh:Couldnotresolvehostnamerecommended:Nameorservicenotknown
- have:ssh:Couldnotresolvehostnamehave:Nameorservicenotknown
- guard.:ssh:Couldnotresolvehostnameguard.:Nameorservicenotknown
- Server:ssh:CouldnotresolvehostnameServer:Nameorservicenotknown
- loaded:ssh:Couldnotresolvehostnameloaded:Nameorservicenotknown
- It's:ssh:CouldnotresolvehostnameIt's:Nameorservicenotknown
- try:ssh:Couldnotresolvehostnametry:Nameorservicenotknown
- the:ssh:Couldnotresolvehostnamethe:Nameorservicenotknown
- You:ssh:CouldnotresolvehostnameYou:Nameorservicenotknown
- that:ssh:Couldnotresolvehostnamethat:Nameorservicenotknown
- might:ssh:Couldnotresolvehostnamemight:Nameorservicenotknown
- you:ssh:Couldnotresolvehostnameyou:Nameorservicenotknown
- library:ssh:Couldnotresolvehostnamelibrary:Nameorservicenotknown
- fix:ssh:Couldnotresolvehostnamefix:Nameorservicenotknown
- to:ssh:Couldnotresolvehostnameto:Nameorservicenotknown
- highly:ssh:Couldnotresolvehostnamehighly:Nameorservicenotknown
- library:ssh:Couldnotresolvehostnamelibrary:Nameorservicenotknown
- the:ssh:Couldnotresolvehostnamethe:Nameorservicenotknown
- 'execstack:ssh:Couldnotresolvehostname'execstack:Nameorservicenotknown
- '-z:ssh:Couldnotresolvehostname'-z:Nameorservicenotknown
- now.:ssh:Couldnotresolvehostnamenow.:Nameorservicenotknown
以上错误可以在/etc/profile加入以下配置
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
然后重新格式化,这时将不会提示错误信息,但是还是有警告信息。
4/08/1007:07:57WARNutil.NativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswhereapplicable
为了能彻底解决这些问题,我们还需要在/etc/profile文件中添加以下环境变量
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
加入了该环境变量,此时如果主机的位数和hadoop库文件的位数不一致也会出现以上的错误。
可以通过uname -a 查看当前系统的信息。
Linux yitian1 2.6.32-573.8.1.el6.x86_64 #1 SMP Tue Nov 10 18:01:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
从以上信息可知,当前系统的linux内核是2.6.32-573.8.1.el6.x86_64,位数是64位
还有通过以下命令查看当前hadoop的库文件是多少位的
file /usr/local/hadoop/lib/native/*
/usr/local/hadoop/lib/native/libhadoop.a: current ar archive
/usr/local/hadoop/lib/native/libhadooppipes.a: current ar archive
/usr/local/hadoop/lib/native/libhadoop.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
/usr/local/hadoop/lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
/usr/local/hadoop/lib/native/libhadooputils.a: current ar archive
/usr/local/hadoop/lib/native/libhdfs.a: current ar archive
/usr/local/hadoop/lib/native/libhdfs.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
/usr/local/hadoop/lib/native/libhdfs.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
从以上输出信息可以看出,hadoop的版本也是64位的,如果hadoop的版本和系统的版本不一致,则必须要保证他们一致,不一致的情况下,一般是更换hadoop的核心库
注意:记得修改了/etc/profile文件之后,为了让配置立即生效,执行source /etc/profile命令