歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Hadoop-0.20.205.0 編譯

Hadoop-0.20.205.0 編譯

日期:2017/2/28 16:01:49   编辑:Linux教程

嘗試編譯Hadoop-0.20.205這個版本,編譯過程出現了如下小錯誤:/home/user/github/hadoop-common/build.xml:1611: /home/user/github/hadoop-common/build/hadoop-0.20.205.1/native not found.

以上提示是在說native目錄沒有找到,hadoop引入了本地庫的概念,通過本地庫可以使Hadoop更高效的做某些事情,目前在Hadoop中本地庫應用在文件的壓縮上面:

1. zlib

2. gzip

解決過程:

1. 進入到/hadoop-common/src/native目錄,先嘗試直接編譯本地庫:./configure

2. 編譯沒有通過,並打出如下錯誤:configure: error: Native java headers not found. Is $JAVA_HOME set correctly?

3. export JAVA_HOME

4. 再次執行./configure,編譯通過

5. 執行ant mvn-install,通過

注:在Ubuntu下可能還會有些其它錯誤,總之依次執行./configure make make install看能不能通過就行了。


附1:

在使用這兩種壓縮方式的時候,Hadoop默認會從$HADOOP_HOME/lib/native/Linux-*目錄中加載本地庫。
如果加載成功,輸出為:
DEBUG util.NativeCodeLoader - Trying to load the custom-built native-hadoop library...
INFO util.NativeCodeLoader - Loaded the native-hadoop library
如果加載失敗,輸出為:
INFO util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
在Hadoop的配置文件core-site.xml中可以設置是否使用本地庫:
<property>
<name>hadoop.native.lib</name>
<value>true</value>
<description>Should native hadoop libraries, if present, be used.</description>
</property>
Hadoop默認的配置為啟用本地庫。
另外,可以在環境變量中設置使用本地庫的位置:
export JAVA_LIBRARY_PATH=/path/to/hadoop-native-libs
有的時候也會發現Hadoop自帶的本地庫無法使用,這種情況下就需要自己去編譯本地庫了。在$HADOOP_HOME目錄下,使用如下命令即可:
ant compile-native
編譯完成後,可以在$HADOOP_HOME/build/native目錄下找到相應的文件,然後指定文件的路徑或者移動編譯好的文件到默認目錄下即可。

Copyright © Linux教程網 All Rights Reserved