1. 下載maven安裝包,建議安裝3.0以上版本,本次安裝選擇的是maven3.0.5的二進制包,下載地址以下html
http://mirror.bit.edu.cn/apache/maven/maven-3/java
2. 使用ssh工具把maven包上傳到/home/hadoop/upload目錄node
3. 解壓縮apache-maven-3.0.5-bin.tar.gz包web
$tar -zxvf apache-maven-3.0.5-bin.tar.gzapache
4. 把apache-maven-3.0.5目錄移到/usr/local目錄下服務器
$sudo mv apache-maven-3.0.5 /usr/local網絡
5. 在/etc/profile配置文件中加入以下設置app
export PATH=$JAVA_HOME/bin:/usr/local/apache-maven-3.0.5/bin:$PATHssh
6. 編輯/etc/profile文件並驗證配置是否成功:webapp
$source /etc/profile
$mvn -version
#yum install svn
#yum install autoconf automake libtool cmake
#yum install ncurses-devel
#yum install openssl-devel
#yum install gcc*
注:該程序包須要在gcc安裝完畢後才能安裝,不然提示沒法找到gcc編譯器。
1. 下載protobuf安裝包
下載連接爲: https://code.google.com/p/protobuf/downloads/list
2. 使用ssh工具把protobuf-2.5.0.tar.gz包上傳到/home/hadoop/Downloads目錄
3. 解壓安裝包
$tar -zxvf protobuf-2.5.0.tar.gz
4. 把protobuf-2.5.0目錄轉移到/usr/local目錄下
$sudo mv protobuf-2.5.0 /usr/local
5. 進行目錄運行命令
進入目錄以root用戶運行以下命令:
#./configure
#make
#make check
#make install
6. 驗證是否安裝成功
運行成功以後,經過以下方式來驗證是否安裝成功
#protoc
經過SVN獲取Hadoop2.2.0源代碼,在/home/hadoop/Downloads目錄下命令:
$svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0
獲取時間較長,大小約75.3M
:) 因爲hadoop2.2.0在svn中pom.xml有點問題,會形成編譯中出錯,可先參考3.2修復該問題。在Hadoop源代碼的根目錄執行以下命令:
$mvn package -Pdist,native -DskipTests –Dtar
(注意:這行命令須要手工輸入,若是複製執行會報異常!)
耗費的時間較長,總共花費了32分鐘,在編譯過程須要聯網,從網絡中下載所須要的資料。
到 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位
在hadoop-dist/target目錄中已經打包好了hadoop-2.2.0.tar.gz,該文件做爲Hadoop2.X 64位安裝包。
1.在Apache網站上提供Hadoop2.X安裝包只支持32位操做系統安裝,在64位服務器安裝會出現4.1的錯誤異常。咱們使用上一步驟編譯好的hadoop-2.2.0.tar.gz文件做爲安裝包(也能夠從網上下載native文件夾或者打包好的64位hadoop安裝包),使用"Spark編譯與部署(上)"中1. 3.1介紹的工具上傳到/home/hadoop/upload 目錄下
2. 在主節點上解壓縮
$cd /home/hadoop/upload/
$tar -xzf hadoop-2.2.0.tar.gz
3. 把hadoop-2.2.0目錄移到/app/hadoop目錄下
$ mv hadoop-2.2.0 /app/hadoop
$ls /app/hadoop
hadoop用戶在/app/hadoop/hadoop-2.2.0目錄下建立tmp、name和data目錄
$cd /app/hadoop/hadoop-2.2.0/
$mkdir tmp
$mkdir name
$mkdir data
$ll
1. 打開配置文件hadoop-env.sh
$cd /app/hadoop/hadoop-2.2.0/etc/hadoop
$sudo vi hadoop-env.sh
2. 加入配置內容,設置JAVA_HOME和PATH路徑
export JAVA_HOME=/usr/lib/java/jdk1.7.0_55
export PATH=$PATH:/app/hadoop/hadoop-2.2.0/bin
3. 編譯配置文件hadoop-env.sh,並確認生效
$source hadoop-env.sh
$hadoop version
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
2. 加入配置內容,設置JAVA_HOME路徑
export JAVA_HOME=/usr/lib/java/jdk1.7.0_55
3. 編譯配置文件yarn-env.sh,並確認生效
$source yarn-env.sh
1. 使用以下命令打開core-site.xml配置文件
$sudo vi core-site.xml
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>
1. 使用以下命令打開hdfs-site.xml配置文件
$sudo vi hdfs-site.xml
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>
1. 默認狀況下不存在mapred-site.xml文件,能夠從模板拷貝一份
$cp mapred-site.xml.template mapred-site.xml
2. 使用以下命令打開mapred-site.xml配置文件
$sudo vi mapred-site.xml
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>
1. 使用以下命令打開yarn-site.xml配置文件
$sudo vi yarn-site.xml
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>
使用$sudo vi slaves打開從節點配置文件,在文件中加入
hadoop1
hadoop2
hadoop3
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/
2. 在從節點查看是否複製成功
$cd /app/hadoop/hadoop-2.2.0/
$./bin/hdfs namenode -format
$cd /app/hadoop/hadoop-2.2.0/sbin
$./start-dfs.sh
若是服務器操做系統爲32位時,出現問題3.1異常,能夠參考解決
此時在hadoop1上面運行的進程有:NameNode、SecondaryNameNode和DataNode
hadoop2和hadoop3上面運行的進程有:NameNode和DataNode
$cd /app/hadoop/hadoop-2.2.0/sbin
$./start-yarn.sh
此時在hadoop1上運行的進程有:NameNode、SecondaryNameNode、DataNode、NodeManager和ResourceManager
hadoop2和hadoop3上面運行的進程有:NameNode、DataNode和NodeManager
在安裝hadoop2.2.0過程當中出現以下異常:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
經過分析是因爲lib/native目錄中有些文件是在32位編譯,沒法適應CentOS 64位環境形成
有兩種辦法解決:
l 從新編譯hadoop,而後從新部署
l 暫時辦法是修改配置,忽略有問題的文件
目前的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
直接修改hadoop-common-project/hadoop-auth/pom.xml,其實就是少了一個包,添加一個dependency:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
在安裝過程當中啓動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
127.0.0.1 localhost
改成
192.168.0.61 localhost
重啓機器便可