天天看點

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

1. 下載下傳maven安裝包,建議安裝3.0以上版本,本次安裝選擇的是maven3.0.5的二進制包,下載下傳位址如下

http://mirror.bit.edu.cn/apache/maven/maven-3/

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

2. 使用ssh工具把maven包上傳到/home/hadoop/upload目錄

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

3. 解壓縮apache-maven-3.0.5-bin.tar.gz包

$tar -zxvf apache-maven-3.0.5-bin.tar.gz

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

4. 把apache-maven-3.0.5目錄移到/usr/local目錄下

$sudo mv apache-maven-3.0.5 /usr/local

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

5. 在/etc/profile配置檔案中加入如下設定

export PATH=$JAVA_HOME/bin:/usr/local/apache-maven-3.0.5/bin:$PATH

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

6. 編輯/etc/profile檔案并驗證配置是否成功:

$source /etc/profile

$mvn -version

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

#yum install svn

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

#yum install autoconf automake libtool cmake

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

#yum install ncurses-devel

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

#yum install openssl-devel

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

#yum install gcc*

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

注:該程式包需要在gcc安裝完畢後才能安裝,否則提示無法找到gcc編譯器。

1. 下載下傳protobuf安裝包

下載下傳連結為: https://code.google.com/p/protobuf/downloads/list

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

2. 使用ssh工具把protobuf-2.5.0.tar.gz包上傳到/home/hadoop/Downloads目錄

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

3. 解壓安裝包

$tar -zxvf protobuf-2.5.0.tar.gz

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

4. 把protobuf-2.5.0目錄轉移到/usr/local目錄下

$sudo mv protobuf-2.5.0 /usr/local

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

5. 進行目錄運作指令

進入目錄以root使用者運作如下指令:

#./configure

#make

#make check

#make install

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

6. 驗證是否安裝成功

運作成功之後,通過如下方式來驗證是否安裝成功

#protoc

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

通過SVN擷取Hadoop2.2.0源代碼,在/home/hadoop/Downloads目錄下指令:

$svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0

擷取時間較長,大小約75.3M

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

:) 由于hadoop2.2.0在svn中pom.xml有點問題,會造成編譯中出錯,可先參考3.2修複該問題。在Hadoop源代碼的根目錄執行如下指令:

$mvn package -Pdist,native -DskipTests –Dtar

(注意:這行指令需要手工輸入,如果複制執行會報異常!)

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

耗費的時間較長,總共花費了32分鐘,在編譯過程需要聯網,從網絡中下載下傳所需要的資料。

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

到 hadoop-dist/target/hadoop-2.2.0/lib/native 目錄中檢視libhadoop.so.1.0.0屬性:

$file ./libhadoop.so.1.0.0

該檔案為ELF 64-bit LSB則表示檔案成功編譯為64位

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

在hadoop-dist/target目錄中已經打包好了hadoop-2.2.0.tar.gz,該檔案作為Hadoop2.X 64位安裝包。

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

1.在Apache網站上提供Hadoop2.X安裝包隻支援32位作業系統安裝,在64位伺服器安裝會出現4.1的錯誤異常。我們使用上一步驟編譯好的hadoop-2.2.0.tar.gz檔案作為安裝包(也可以從網上下載下傳native檔案夾或者打包好的64位hadoop安裝包),使用"Spark編譯與部署(上)"中1. 3.1介紹的工具上傳到/home/hadoop/upload 目錄下

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

2. 在主節點上解壓縮

$cd /home/hadoop/upload/

$tar -xzf hadoop-2.2.0.tar.gz

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

3. 把hadoop-2.2.0目錄移到/app/hadoop目錄下

$ mv hadoop-2.2.0 /app/hadoop

$ls /app/hadoop

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

hadoop使用者在/app/hadoop/hadoop-2.2.0目錄下建立tmp、name和data目錄

$cd /app/hadoop/hadoop-2.2.0/

$mkdir tmp

$mkdir name

$mkdir data

$ll

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

1.     打開配置檔案hadoop-env.sh

$cd /app/hadoop/hadoop-2.2.0/etc/hadoop

$sudo vi hadoop-env.sh

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

2. 加入配置内容,設定JAVA_HOME和PATH路徑

export JAVA_HOME=/usr/lib/java/jdk1.7.0_55

export PATH=$PATH:/app/hadoop/hadoop-2.2.0/bin

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

3. 編譯配置檔案hadoop-env.sh,并确認生效

$source hadoop-env.sh

$hadoop version

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

1. 在/app/hadoop/hadoop-2.2.0/etc/hadoop打開配置檔案yarn-env.sh

$sudo vi yarn-env.sh

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

2. 加入配置内容,設定JAVA_HOME路徑

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

3. 編譯配置檔案yarn-env.sh,并确認生效

$source yarn-env.sh

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

1. 使用如下指令打開core-site.xml配置檔案

$sudo vi core-site.xml

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

2. 在配置檔案中,按照如下内容進行配置

<configuration>

  <property>

    <name>fs.default.name</name>

    <value>hdfs://hadoop1:9000</value>

  </property>

    <name>fs.defaultFS</name>

    <name>io.file.buffer.size</name>

    <value>131072</value>

    <name>hadoop.tmp.dir</name>

    <value>file:/app/hadoop/hadoop-2.2.0/tmp</value>

    <description>Abase for other temporary directories.</description>

    <name>hadoop.proxyuser.hduser.hosts</name>

    <value>*</value>

    <name>hadoop.proxyuser.hduser.groups</name>

</configuration>

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

1. 使用如下指令打開hdfs-site.xml配置檔案

$sudo vi hdfs-site.xml

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

   <name>dfs.namenode.secondary.http-address</name>

   <value>hadoop1:9001</value>

   <name>dfs.namenode.name.dir</name>

   <value>file:/app/hadoop/hadoop-2.2.0/name</value>

   <name>dfs.datanode.data.dir</name>

   <value>file:/app/hadoop/hadoop-2.2.0/data</value>

   <name>dfs.replication</name>

   <value>2</value>

   <name>dfs.webhdfs.enabled</name>

   <value>true</value>

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

1. 預設情況下不存在mapred-site.xml檔案,可以從模闆拷貝一份

$cp mapred-site.xml.template mapred-site.xml

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

2. 使用如下指令打開mapred-site.xml配置檔案

$sudo vi mapred-site.xml

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

3. 在配置檔案中,按照如下内容進行配置

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

    <name>mapreduce.jobhistory.address</name>

    <value>hadoop1:10020</value>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop1:19888</value>

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

1. 使用如下指令打開yarn-site.xml配置檔案

$sudo vi yarn-site.xml

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

    <value>org.apache.hadoop.mapred.ShuffleHandler</value>

    <name>yarn.resourcemanager.address</name>

    <value>hadoop1:8032</value>

    <name>yarn.resourcemanager.scheduler.address</name>

    <value>hadoop1:8030</value>

    <name>yarn.resourcemanager.resource-tracker.address</name>

    <value>hadoop1:8031</value>

    <name>yarn.resourcemanager.admin.address</name>

    <value>hadoop1:8033</value>

    <name>yarn.resourcemanager.webapp.address</name>

    <value>hadoop1:8088</value>

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

使用$sudo vi slaves打開從節點配置檔案,在檔案中加入

hadoop1

hadoop2

hadoop3

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

1.确認hadoop2和hadoop3節點/app/hadoop所屬組和使用者均為hadoop,然後進入hadoop1機器/app/hadoop目錄,使用如下指令把hadoop檔案夾複制到hadoop2和hadoop3機器

$cd /app/hadoop

$scp -r hadoop-2.2.0 hadoop@hadoop2:/app/hadoop/

$scp -r hadoop-2.2.0 hadoop@hadoop3:/app/hadoop/

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

2. 在從節點檢視是否複制成功

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

$./bin/hdfs namenode -format

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

$cd /app/hadoop/hadoop-2.2.0/sbin

$./start-dfs.sh

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

如果伺服器作業系統為32位時,出現問題3.1異常,可以參考解決

此時在hadoop1上面運作的程序有:NameNode、SecondaryNameNode和DataNode

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

hadoop2和hadoop3上面運作的程序有:NameNode和DataNode

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

$./start-yarn.sh

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

此時在hadoop1上運作的程序有:NameNode、SecondaryNameNode、DataNode、NodeManager和ResourceManager

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

hadoop2和hadoop3上面運作的程序有:NameNode、DataNode和NodeManager

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

在安裝hadoop2.2.0過程中出現如下異常:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

通過分析是由于lib/native目錄中有些檔案是在32位編譯,無法适應CentOS 64位環境造成

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

有兩種辦法解決:

l  重新編譯hadoop,然後重新部署

l  暫時辦法是修改配置,忽略有問題的檔案

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

目前的2.2.0 的Source Code 壓縮包解壓出來的code有個bug 需要patch後才能編譯。否則編譯hadoop-auth 會提示下面錯誤:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation

failure:

[ERROR] /home/hadoop/Downloads/release-2.2.0/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[88,11]

error: cannot access AbstractLifeCycle

[ERROR] class file for org.mortbay.component.AbstractLifeCycle not found

[ERROR] /home/hadoop/Downloads/release-2.2.0/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[96,29]

error: cannot access LifeCycle

[ERROR] class file for org.mortbay.component.LifeCycle not found

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

直接修改hadoop-common-project/hadoop-auth/pom.xml,其實就是少了一個包,添加一個dependency:

<dependency>

      <groupId>org.mortbay.jetty</groupId>

      <artifactId>jetty-util</artifactId>

      <scope>test</scope>

</dependency>

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決
Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

在安裝過程中啟動HDFS出現如下錯誤:

2015-01-14 22:55:16,076 WARN  [main] util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(62)) - Unable to load native-hadoop library for your platform... using builtin-java

classes where applicable]

Error: Cannot find configuration directory: /etc/hadoop

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

127.0.0.1           localhost

改為

192.168.0.61      localhost

Spark-基礎-Spark編譯與部署--Hadoop編譯安裝 1、編譯Hadooop 2、安裝Hadoop 3、問題解決

重新開機機器即可