我目前正在一台运行CentOs的服务器上配置hadoop。当我运行start-dfs.sh或stop-dfs.sh时,我得到以下错误:
警告跑龙套。NativeCodeLoader:无法加载原生hadoop库
你的平台……在适用的地方使用内置java类
我运行的是Hadoop 2.2.0。
我在网上搜索了一下,找到了这个链接:http://balanceandbreath.blogspot.ca/2013/01/utilnativecodeloader-unable-to-load.html
但是,hadoop 2上的/native/目录的内容。x似乎不同,所以我不知道该怎么办。
我还在hadoop-env.sh中添加了以下两个环境变量:
出口HADOOP_OPTS = " HADOOP_OPTS美元
-Djava.library.path = / usr /地方/ hadoop / lib /”
出口HADOOP_COMMON_LIB_NATIVE_DIR = " / usr /地方/ hadoop / lib /本地/”
什么好主意吗?
从以前的帖子验证补救措施:
1)检查Hadoop发行版附带的libhadoop.so.1.0.0是否为我的机器架构编译,即x86_64:
[nova]:file /opt/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0
/opt/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=3a80422c78d708c9a1666c1a8edd23676ed77dbb, not stripped
2)添加-Djava.library。path=<path hadoop-env.sh中的> to HADOOP_OPT:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.library.path=/opt/hadoop-2.6.0/lib/native"
这确实使恼人的警告消失了。
首先:您可以修改glibc版本。CentOS提供传统的安全软件,这也意味着版本是旧的,如glibc,protobuf…
ldd --version
ldd /opt/hadoop/lib/native/libhadoop.so.1.0.0
您可以将当前glibc的版本与所需的glibc进行比较。
其次:如果当前glibc版本较旧,可以更新glibc。
下载Glibc
如果当前glibc id的版本正确,则可以将word native附加到HADOOP_OPTS中
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"