錯誤:Unable to load native-hadoop library for your platfor

在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消失!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章