您的位置:首页 > 运维架构

错误:Unable to load native-hadoop library for your platfor

2016-01-23 00:28 330 查看
在CentOS6.4上安装完hadoop2.5以后,使用以下命令:
hadoop fs -ls /

提示: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

有个WARN提示hadoop不能加载本地库,这个问题是由于在apache hadoop官网上下载的hadoopXXX.bin.tar.gz是在32位的机器上编译的,我集群使用的64bit。
解决办法如下:
1. 下载hadoop2.5源码

2. 在集群的某台机器上编译

3. 替换之前的$HADOOP_HOME/lib/native为新编译的native目录

其中有几点注意的:
(1)在2(进行编译)之前,先修改maven安装目录下conf/settings.xml(因为maven使用的国外的reposity,国内有时无法访问,修改为国内镜像即可),<mirrors></mirros>里添加,其他的不需改动,具体修改如下:
<mirror>
<id>nexus-osc</id>
<mirrorOf>*</mirrorOf>
<name>Nexusosc</name>
<url>http://maven.oschina.net/content/groups/public/</url>
</mirror>

同样,在<profiles></profiles>内新添加
<profile>
<id>jdk-1.7</id>
<activation>
<jdk>1.7</jdk>
</activation>
<repositories>
<repository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>

修改完成后使用以下命令编译hadoop;
mvn package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar

然后就是等待,大概20min后,build success,目标在
hadoop-2.5.0-src/hadoop-dist/target/hadoop-2.5.0.tar.gz
(2)在编译成功后,将新的lib/native替换到集群中原来的lib/native,记得要修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh,在最后加上;

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"


======
重新运行如下命令:

hadoop fs -ls


WARN消失!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: