在Ubuntu上安裝完hadoop2.4以后,使用以下命令:
hadoop fs -ls 14/09/09 11:33:51 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Found 1 items drwxr-xr-x - duomai supergroup 0 2014-09-05 12:10 flume
有個WARN提示hadoop不能加載本地庫,網上搜了下,這個問題基本上是由於在apache hadoop官網上下載的hadoopXXX.bin.tar.gz實在32位的機器上編譯的(蛋疼吧),我集群使用的64bit的,加載.so文件時出錯,當然基本上不影響使用hadoop(如果你使用mahout做一些機器學習的任務時有可能會遇到麻煩,加載不成功,任務直接退出,所以還是有必要解決掉這個warn的)。
但是每次運行一個命令多有這么個WARN很不爽,想干掉也很簡單:
1. 下載hadoop2.4源碼 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.4.1-src/hadoop-dist/target/hadoop-2.4.1.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 Found 1 items drwxr-xr-x - duomai supergroup 0 2014-09-05 12:10 flume
WARN消失,good!
參考資料:
1. http://hadoop.apache.org/docs/r2.4.0/hadoop-project-dist/hadoop-common/NativeLibraries.html
2. http://stackoverflow.com/questions/19943766/hadoop-unable-to-load-native-hadoop-library-for-your-platform-error-on-centos
3. http://blog.csdn.net/w13770269691/article/details/16883663/#