出现这种问题,第一时间最好google,最好不好百度(浪费时间)
官方解析
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/NativeLibraries.html
确定${HADOOP_HOME}/lib/native
的libhadoop.so.1.0.0是否是符合你的平台
file ${HADOOP_HOME}/lib/native/libhadoop.so.1.0.0
linux@ubuntu:~$ file ${HADOOP_HOME}/lib/native/libhadoop.so.1.0.0
/usr/local/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x89bf2014d89842843927081914f111c920ad7c93, not stripped
确认是64或者32后,就根据平台下载对应的Hadoop或者自已编译(推荐自已编译)
如果平台一致还是报错,就看看
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"
这是我的环境配置
#HADOOP_ENV
export HADOOP_HOME=/usr/local/hadoop-2.6.0
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"
测试一下
linux@ubuntu:~$ hadoop checknative -a
15/09/18 20:22:12 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version
15/09/18 20:22:12 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop: true /usr/local/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0
zlib: true /lib/i386-linux-gnu/libz.so.1
snappy: false
lz4: true revision:99
bzip2: false
openssl: true /usr/lib/i386-linux-gnu/libcrypto.so
15/09/18 20:22:12 INFO util.ExitUtil: Exiting with status 1
linux@ubuntu:~$
成功了,让后start-dfs.sh
linux@ubuntu:~$ start-dfs.sh
Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.
Starting namenodes on []
localhost: starting namenode, logging to /usr/local/hadoop-2.6.0/logs/hadoop-linux-namenode-ubuntu.out
localhost: starting datanode, logging to /usr/local/hadoop-2.6.0/logs/hadoop-linux-datanode-ubuntu.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop-2.6.0/logs/hadoop-linux-secondarynamenode-ubuntu.out