Spark入門實戰系列--2.Spark編譯與部署(中)--Hadoop編譯安裝

【注】該系列文章以及使用到安裝包/測試數據 能夠在《傾情大奉送--Spark入門實戰系列》獲取

1編譯Hadooop

1.1 搭建環境

1.1.1 安裝並設置maven

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

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

clip_image002

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

clip_image004

3. 解壓縮apache-maven-3.0.5-bin.tar.gzweb

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

clip_image006

4. apache-maven-3.0.5目錄移到/usr/local目錄下服務器

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

clip_image008

5. /etc/profile配置文件中加入以下設置app

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

clip_image010

6. 編輯/etc/profile文件並驗證配置是否成功:webapp

$source /etc/profile

$mvn -version

clip_image012

1.1.2 root用戶使用yum安裝svn

#yum install svn

clip_image014

clip_image016

1.1.3 root用戶使用yum安裝autoconf automake libtool cmake

#yum install autoconf automake libtool cmake

clip_image018

clip_image020

1.1.4 root用戶使用yum安裝ncurses-devel

#yum install ncurses-devel

clip_image022

1.1.5 root用戶使用yum安裝openssl-devel

#yum install openssl-devel

clip_image024

clip_image026

1.1.6 root用戶使用yum安裝gcc*

#yum install gcc*

clip_image028

clip_image030

1.1.7 安裝並設置protobuf

注:該程序包須要在gcc安裝完畢後才能安裝,不然提示沒法找到gcc編譯器。

1. 下載protobuf安裝包

下載連接爲: https://code.google.com/p/protobuf/downloads/list

clip_image032

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

clip_image034

3. 解壓安裝包

$tar -zxvf protobuf-2.5.0.tar.gz

clip_image036

clip_image038

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

$sudo mv protobuf-2.5.0 /usr/local

clip_image040

5. 進行目錄運行命令

進入目錄以root用戶運行以下命令:

#./configure

#make

#make check

#make install

clip_image042

clip_image044

6. 驗證是否安裝成功

運行成功以後,經過以下方式來驗證是否安裝成功

#protoc

clip_image046

1.2 編譯Hadoop

1.2.1 下載Hadoop源代碼 Release2.2.0

經過SVN獲取Hadoop2.2.0源代碼,在/home/hadoop/Downloads目錄下命令:

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

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

clip_image048

1.2.2 編譯Hadoop源代碼

:) 因爲hadoop2.2.0svnpom.xml有點問題,會形成編譯中出錯,可先參考3.2修復該問題。在Hadoop源代碼的根目錄執行以下命令:

$mvn package -Pdist,native -DskipTests –Dtar

(注意:這行命令須要手工輸入,若是複製執行會報異常!)

clip_image050

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

clip_image052

clip_image054

1.2.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

clip_image056

hadoop-dist/target目錄中已經打包好了hadoop-2.2.0.tar.gz,該文件做爲Hadoop2.X 64位安裝包。

clip_image058

2安裝Hadoop

2.1 配置準備

2.1.1 上傳並解壓Hadoop安裝包

1.Apache網站上提供Hadoop2.X安裝包只支持32位操做系統安裝,在64位服務器安裝會出現4.1的錯誤異常。咱們使用上一步驟編譯好的hadoop-2.2.0.tar.gz文件做爲安裝包(也能夠從網上下載native文件夾或者打包好的64hadoop安裝包),使用"Spark編譯與部署(上)"1. 3.1介紹的工具上傳到/home/hadoop/upload 目錄下

clip_image060

2. 在主節點上解壓縮

$cd /home/hadoop/upload/

$tar -xzf hadoop-2.2.0.tar.gz

clip_image062

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

$ mv hadoop-2.2.0 /app/hadoop

$ls /app/hadoop

clip_image064

2.1.2 Hadoop目錄下建立子目錄

hadoop用戶在/app/hadoop/hadoop-2.2.0目錄下建立tmpnamedata目錄

$cd /app/hadoop/hadoop-2.2.0/

$mkdir tmp

$mkdir name

$mkdir data

$ll

clip_image066

2.1.3 配置hadoop-env.sh

1.     打開配置文件hadoop-env.sh

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

$sudo vi hadoop-env.sh

clip_image068

2. 加入配置內容,設置JAVA_HOMEPATH路徑

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

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

clip_image070

3. 編譯配置文件hadoop-env.sh,並確認生效

$source hadoop-env.sh

$hadoop version

clip_image072

2.1.4 配置yarn-env.sh

1. /app/hadoop/hadoop-2.2.0/etc/hadoop打開配置文件yarn-env.sh

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

$sudo vi yarn-env.sh

clip_image074

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

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

clip_image076

3. 編譯配置文件yarn-env.sh,並確認生效

$source yarn-env.sh

clip_image078

2.1.5 配置core-site.xml

1. 使用以下命令打開core-site.xml配置文件

$sudo vi core-site.xml

clip_image080

2. 在配置文件中,按照以下內容進行配置

<configuration>

  <property>

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

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

  </property>

  <property>

    <name>fs.defaultFS</name>

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

  </property>

  <property>

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

    <value>131072</value>

  </property>

  <property>

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

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

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

  </property>

  <property>

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

    <value>*</value>

  </property>

  <property>

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

    <value>*</value>

  </property>

</configuration>

clip_image082

2.1.6 配置hdfs-site.xml

1. 使用以下命令打開hdfs-site.xml配置文件

$sudo vi hdfs-site.xml

clip_image084

2. 在配置文件中,按照以下內容進行配置

<configuration>

  <property>

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

   <value>hadoop1:9001</value>

  </property>

  <property>

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

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

  </property>

  <property>

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

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

  </property>

  <property>

   <name>dfs.replication</name>

   <value>2</value>

  </property>

  <property>

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

   <value>true</value>

  </property>

</configuration>

clip_image086

2.1.7 配置mapred-site.xml

1. 默認狀況下不存在mapred-site.xml文件,能夠從模板拷貝一份

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

clip_image088

2. 使用以下命令打開mapred-site.xml配置文件

$sudo vi mapred-site.xml

clip_image090

3. 在配置文件中,按照以下內容進行配置

<configuration>

  <property>

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

    <value>yarn</value>

  </property>

  <property>

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

    <value>hadoop1:10020</value>

  </property>

  <property>

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

    <value>hadoop1:19888</value>

  </property>

</configuration>

clip_image092

2.1.8 配置yarn-site.xml

1. 使用以下命令打開yarn-site.xml配置文件

$sudo vi yarn-site.xml

clip_image094

2. 在配置文件中,按照以下內容進行配置

<configuration>

  <property>

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

    <value>mapreduce_shuffle</value>

  </property>

  <property>

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

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

  </property>

  <property>

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

    <value>hadoop1:8032</value>

  </property>

  <property>

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

    <value>hadoop1:8030</value>

  </property>

  <property>

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

    <value>hadoop1:8031</value>

  </property>

  <property>

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

    <value>hadoop1:8033</value>

  </property>

  <property>

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

    <value>hadoop1:8088</value>

  </property>

</configuration>

clip_image096

2.1.9 配置Slaves文件

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

hadoop1

hadoop2

hadoop3

clip_image098 

2.1.10 向各節點分發Hadoop程序

1.確認hadoop2hadoop3節點/app/hadoop所屬組和用戶均爲hadoop,而後進入hadoop1機器/app/hadoop目錄,使用以下命令把hadoop文件夾複製到hadoop2hadoop3機器

$cd /app/hadoop

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

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

clip_image100

clip_image102

 

2. 在從節點查看是否複製成功

clip_image104

2.2 啓動部署

2.2.1 格式化NameNode

$cd /app/hadoop/hadoop-2.2.0/

$./bin/hdfs namenode -format

clip_image106

clip_image108

2.2.2 啓動HDFS

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

$./start-dfs.sh

clip_image110

若是服務器操做系統爲32位時,出現問題3.1異常,能夠參考解決

2.2.3 驗證HDFS啓動

此時在hadoop1上面運行的進程有:NameNodeSecondaryNameNodeDataNode

clip_image112

hadoop2hadoop3上面運行的進程有:NameNodeDataNode

clip_image114

2.2.4 啓動YARN

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

$./start-yarn.sh

clip_image116

2.2.5 驗證YARN啓動

此時在hadoop1上運行的進程有:NameNodeSecondaryNameNodeDataNodeNodeManagerResourceManager

clip_image118

hadoop2hadoop3上面運行的進程有:NameNodeDataNodeNodeManager

clip_image120

clip_image122

3問題解決

3.1 CentOS 64bit安裝Hadoop2.2.0中出現文件編譯位數異常

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

clip_image124

經過分析是因爲lib/native目錄中有些文件是在32位編譯,沒法適應CentOS 64位環境形成

clip_image126

有兩種辦法解決:

l  從新編譯hadoop,而後從新部署

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

clip_image128

3.2 編譯Hadoop2.2.0出現代碼異常

目前的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

clip_image130

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

<dependency>

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

      <artifactId>jetty-util</artifactId>

      <scope>test</scope>

</dependency>

clip_image132

 

clip_image134

3.3 安裝Hadoop2.2.0出現不能找到/etc/hadoop目錄異常

在安裝過程當中啓動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

Error: Cannot find configuration directory: /etc/hadoop

clip_image136

127.0.0.1           localhost

改成

192.168.0.61      localhost

clip_image138

重啓機器便可

相關文章
相關標籤/搜索