天天看點

Hadoop入門之Hadoop-2.5.0源碼編譯

一、 為什麼要編譯Hadoop源碼

Hadoop是使用Java語言開發的,但是有一些需求和操作并不适合使用java,是以就引入了本地庫(Native Libraries)的概念,通過本地庫,Hadoop可以更加高效地執行某一些操作。

native目錄是本地庫,位于hadoop-2.x.x/lib/native目錄下,僅支援linux和unix作業系統。

hadoop中的zlib和gzip子產品會加載本地庫,如果加載失敗,會提示:

16/07/06 12:18:24 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Hadoop入門之Hadoop-2.5.0源碼編譯

可以在core-site.xml中配置hadoop.native.lib值是否使用本地庫,預設值為true。

官方提供的hadoop-2.x版本中,native檔案都是32位編譯的,在實際使用64位環境中,為了能讓Hadoop更高效地運作,最好還是在本地編譯Hadoop源碼,用本地編譯好的本地庫(native目錄)替換官方安裝包裡自帶的本地庫。

二、 編譯源碼的環境要求

1、 必須在Linux下進行

2、 Java JDK必須為1.6以上

3、 Maven 版本必須為3.0以上

4、 安裝Findbugs插件,版本1.3.9

5、 安裝CMake編譯工具,版本2.6

6、 安裝zlib devel

7、 安裝openssl devel

8、 編譯時必須可以連接配接網際網路,因為需要yum下載下傳軟體。

三、 用到的軟體包

1、 apache-maven-3.0.5-bin.tar.gz

2、 cmd_markdown_win64.zip

3、 findbugs-1.3.9.tar.gz

4、 hadoop-2.5.0-src.tar.gz

5、 jdk-7u67-linux-x64.tar.gz

6、 native-2.5.0.tar.gz

7、 protobuf-2.5.0.tar.gz

四、 Hadoop2.x源碼編譯步驟

1、 解壓Hadoop源碼安裝包

(1) [[email protected] sofeware]$ tar -zxf hadoop-2.5.0-src.tar.gz -C /opt/modules/

(2) 檢視是否已經解壓成功

[[email protected] sofeware]$ ll /opt/modules/

total 12

drwxr-xr-x. 11 hadoop hadoop 4096 Jul 4 17:48 hadoop-2.5.0

drwxr-xr-x 15 hadoop hadoop 4096 Aug 7 2014 hadoop-2.5.0-src

2、 解壓JDK

(1) [[email protected] sofeware]$ tar -zxf jdk-7u67-linux-x64.tar.gz -C /opt/modules/

(2) 檢視是否已經解壓成功

[[email protected] sofeware]$ ll /opt/modules/

total 12

drwxr-xr-x. 11 hadoop hadoop 4096 Jul 4 17:48 hadoop-2.5.0

drwxr-xr-x 15 hadoop hadoop 4096 Aug 7 2014 hadoop-2.5.0-src

drwxr-xr-x. 8 hadoop hadoop 4096 Jul 26 2014 jdk1.7.0_67

3、 root使用者配置Java JDK環境變量

(1) root使用者進入/etc/profile檔案

[[email protected] sofeware]$ vim /etc/profile

(2) 配置JDK_HOME和PATH

export JAVA_HOME="/opt/modules/jdk1.7.0_67"

export PATH=$JAVA_HOME/bin:$PATH

(3) 生效配置檔案

[[email protected] sofeware]$ source /etc/profile

(4) 确認Jave配置成功

[[email protected] sofeware]$ java -version

java version "1.7.0_67"

Java(TM) SE Runtime Environment (build 1.7.0_67-b01)

Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

4、 root使用者安裝Maven

(1) Apache Maven,是一個軟體項目管理及自動建構工具。Maven完成項目生命周期的所有階段,包括驗證、代碼生成、編譯、測試、打包、內建測試、安裝、部署、以及項目網站建立和部署。maven的好處在于可以将項目過程規範化、自動化、高效化以及強大的可擴充性。

對于需要的依賴,Maven可以從配置的遠端倉庫裡按需自動下載下傳到本地倉庫

(2) 解壓Maven

[[email protected] sofeware]$ tar -zxf apache-maven-3.0.5-bin.tar.gz -C /opt/modules/

(3) 配置/etc/profile檔案

export MAVEN_HOME="/opt/modules/apache-maven-3.0.5"

export PATH=$MAVEN_HOME/bin:$PATH

(4) 生效配置檔案

[[email protected] sofeware]# source /etc/profile

(5) 确認Maven配置成功

[[email protected] sofeware]# mvn -version

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 21:51:28+0800)

Maven home: /opt/modules/apache-maven-3.0.5

Java version: 1.7.0_67, vendor: Oracle Corporation

Java home: /opt/modules/jdk1.7.0_67/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "linux", version: "2.6.32-504.el6.x86_64", arch: "amd64", family: "unix"

5、 root使用者安裝gcc/gcc-c++/make

[[email protected] sofeware]# yum -y install gcc gcc-c++

接下來yum自動安裝,直到安裝成功會顯示Complete!

6、 普通使用者下安裝protobuf

(1) [[email protected] sofeware]$ tar -zxf protobuf-2.5.0.tar.gz -C /opt/modules/

(2) [[email protected] sofeware]$ /opt/modules/protobuf-2.5.0/configure --prefix=/usr/local/protoc

(3) [[email protected] sofeware]$ cd /opt/modules/protobuf-2.5.0

(4) [[email protected] protobuf-2.5.0]# make

(5) [[email protected] protobuf-2.5.0]# make install

(6) 配置/etc/profile

export PROTOBUF_HOME="/usr/local/protoc"

export PATH=$PROTOBUF_HOME/bin:$PATH

(7) 生效配置檔案

[[email protected] sofeware]# source /etc/profile

(8) 确認配置成功

[[email protected] protobuf-2.5.0]# protoc --version

libprotoc 2.5.0

7、 root使用者下下載下傳安裝CMake、openssl、ncurses

(1) 安裝Cmake

[[email protected] protobuf-2.5.0]# yum -y install cmake

(2) 安裝openssl

[[email protected] protobuf-2.5.0]# yum install openssl-devel

(3) 安裝ncurses

[[email protected] protobuf-2.5.0]# yum -y install ncurses-devel

8、 添加maven鏡像

(1) 編輯maven配置檔案settings.xml

[[email protected] apache-maven-3.3.3]$ vim /opt/modules/apache-maven-3.3.3/conf/settings.xml

(2) 添加鏡像

<mirror>

<id>nexus-osc</id>

<mirrorOf>*</mirrorOf>

<name>Nexus osc</name>

<url>http://maven.oschina.net/content/groups/public</url>

</mirror>

9、 編譯Hadoop源碼

(1) 切換到普通使用者:[[email protected] protobuf-2.5.0]# su hadoop

(2) 進入hadoop源碼目錄:[[email protected] protobuf-2.5.0]$ cd /opt/modules/hadoop-2.5.0-src/

(3) 執行編譯,編譯過程中需要從yum倉庫下載下傳依賴包,需要一段時間

[[email protected] hadoop-2.5.0-src]$ mvn package –DskipTests –Pdist,native

(4) 執行過程中如果報錯,發現是下載下傳依賴失敗,可以換個apache的maven鏡像位址後能夠正常下載下傳。

https://repo.maven.apache.org/maven2

Hadoop入門之Hadoop-2.5.0源碼編譯
Hadoop入門之Hadoop-2.5.0源碼編譯

10、 編譯後,将native目錄替換之前安裝的hadoop lib目錄下的native目錄。

(1) 将編譯後的native目錄覆寫本地原有的native目錄

[[email protected] hadoop-2.5.0-src]$ cp -R /opt/modules/hadoop-2.5.0-src/hadoop-dist/target/hadoop-2.5.0/lib/native/* /opt/modules/hadoop-2.5.0/lib/native/

(2) 進入${HADOOP_HOME}目錄啟動HDFS

[[email protected] hadoop-2.5.0-src]$ cd ${HADOOP_HOME}

[[email protected] hadoop-2.5.0]$ sbin/hadoop-daemon.sh start namenode

[[email protected] hadoop-2.5.0]$ sbin/hadoop-daemon.sh start datanode

(3) 執行dfs指令就不會有警告了

[[email protected] hadoop-2.5.0]$ bin/hdfs dfs -ls /

Hadoop入門之Hadoop-2.5.0源碼編譯

繼續閱讀