附錄A 編譯安裝Hadoop
1. 下載maven安裝包
建議安裝3.0以上版本(由于Spark2.0編譯要求Maven3.3.9及以上版本),本次安裝選擇的是maven3.3.9的二進制包,下載地址如下:
http://mirror.bit.edu.cn/apache/maven/maven-3/
2. 上傳git并解壓縮
把下載的maven安裝包上傳到/home/spark/work目錄,使用如下命令解壓縮并把文件夾移動到/app/soft目錄下:
$cd /home/spark/work
$tar -zxf apache-maven-3.3.9-bin.tar.gz
$mv maven-3.3.9 /app/soft
$ll /app/soft
3. 編譯安裝
在/etc/profile配置文件中加入如下設置:
export PATH=/app/soft/maven-3.3.9/bin:$PATH
修改/etc/profile配置文件并驗證配置是否成功:
$source /etc/profile
$mvn -version
圖 附錄A?1查看Maven是否安裝成功
第二步使用yum安裝必要軟件
以root用戶使用yum安裝svn、gcc等編譯所需要的軟件:
#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
圖 附錄A?2 Protobuf下載頁面
2. 解壓安裝包并移動目錄
把protobuf-2.5.0.tar.gz安裝包上傳到/home/spark/work目錄,通過如下命令把該安裝包解壓并移動到/app/soft目錄中
$tar -zxf protobuf-2.5.0.tar.gz
$mv protobuf-2.5.0 /app/soft
$ll /app/soft
3. 編譯安裝
進入目錄以root用戶運行如下命令對protobuf進行編譯安裝,該過程比較慢,需要花費十幾分鐘時間:
#cd /app/soft/protobuf-2.5.0
#./configure
#make
#make check
#make install
4. 驗證是否安裝成功
編譯安裝成功之后,通過如下方式來驗證是否安裝成功:
#protoc
圖 附錄A?3 確認Protobuf是否安裝成功
可以在apache官網或者鏡像站點下載hadoop源代碼包,比如在下面地址中選擇下載hadoop-2.7.2-src.tar.gz源代碼包:
http://apache.fayea.com/hadoop/common/hadoop-2.7.2/
下載后把源代碼包上傳到/home/spark/work目錄中解壓,然后移動到/app/compile目錄:
$cd /home/spark/work
$tar -zxf hadoop-2.7.2-src.tar.gz
$mv hadoop-2.7.2-src /app/compile
$ll /app/complie
在Hadoop源代碼的根目錄執行如下命令:
$cd /app/compile/hadoop-2.7.2-src
$mvn package -Pdist,native -DskipTests –Dtar
該過程需要64任務進行編譯,耗費的時間較長,在編譯過程需要聯網,從網絡中下載所需要依賴包。由于依賴包速度較慢,可以打開新的命令終端使用$du -sh查看整個目錄或$du -sh *子目錄大小變化,該過程井場卡死或出現異常,這種情況下可以中斷編譯過程,重新執行命令進行編譯,編譯完成后截圖如下:
圖 附錄A?4 Hadoop編譯結果
到 hadoop-dist/target/hadoop-2.7.2/lib/native 目錄中,使用$file ./libhadoop.so.1.0.0命令查看libhadoop.so.1.0.0屬性,該文件為ELF 64-bit LSB則表示文件成功編譯為64位,如下圖所示。其中打包好的hadoop-2.7.2.tar.gz文件存在hadoop-dist/target目錄中,作為后續部署的安裝包。
圖 附錄A?5 驗證Hadoop編譯是否成功
由于在實戰過程中,需要使用HDFS文件系統,以及在介紹運行架構使用需要使用YARN調度框架需要安裝Hadoop,這里使用的是Hadoop2.7.2版本。
使用前面編譯好的hadoop-2.7.2安裝包,或者從apache網站上下載,上傳到master節點的/home/spark/work目錄下,解壓縮并移動到/app/spark目錄下:
$cd /home/spark/work
$tar -zxf hadoop-2.7.2.tar.gz
$mv hadoop-2.7.2 /app/spark
$ll /app/spark
以hadoop用戶登錄在/app/spark/hadoop-2.7.2目錄下創建tmp、name和data目錄
$cd /app/spark/hadoop-2.7.2
$mkdir tmp
$mkdir name
$mkdir data
$ll
使用如下命令打開配置文件hadoop-env.sh:
$cd /app/spark/hadoop-2.7.2/etc/hadoop
$sudo vi hadoop-env.sh
加入如下配置內容,設置JAVA_HOME和PATH路徑:
export JAVA_HOME=/app/soft/jdk1.7.0_55
export PATH=$PATH:/app/spark/hadoop-2.7.2/bin
export HADOOP_CONF_DIR=/app/spark/hadoop-2.7.2/etc/hadoop
編譯配置文件hadoop-env.sh,并確認生效
$source hadoop-env.sh
$hadoop version
圖 附錄A?6 驗證Hadoop部署是否正確
在/app/spark/hadoop-2.7.2/etc/hadoop打開配置文件yarn-env.sh
$cd /app/spark/hadoop-2.7.2/etc/hadoop
$sudo vi yarn-env.sh
加入配置內容,設置JAVA_HOME路徑
export JAVA_HOME=/app/soft/jdk1.7.0_55
使用如下命令編譯配置文件yarn-env.sh,使其生效:
$source yarn-env.sh
使用如下命令打開core-site.xml配置文件
$cd /app/spark/hadoop-2.7.2/etc/hadoop
$sudo vi core-site.xml
在配置文件中,按照如下內容進行配置
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/app/spark/hadoop-2.7.2/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>
使用如下命令打開hdfs-site.xml配置文件:
$cd /app/spark/hadoop-2.7.2/etc/hadoop
$sudo vi hdfs-site.xml
在配置文件中,按照如下內容進行配置
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/app/spark/hadoop-2.7.2/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/app/spark/hadoop-2.7.2/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
默認情況下不存在mapred-site.xml文件,可以從模板拷貝一份,并打開該配置文件:
$cd /app/spark/hadoop-2.7.2/etc/hadoop
$cp mapred-site.xml.template mapred-site.xml
$sudo vi mapred-site.xml
在配置文件中,按照如下內容進行配置
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
使用如下命令打開yarn-site.xml配置文件
$cd /app/spark/hadoop-2.7.2/etc/hadoop
$sudo vi yarn-site.xml
在配置文件中,按照如下內容進行配置
<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>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
使用$sudo vi slaves打開從節點配置文件,在文件中加入master、slave1和slave2節點作為數據節點(DataNode):
master
slave1
slave2
確認slave1和slave2節點/app/spark所屬組和用戶均為spark,然后進入mater節點/app/spark目錄,使用如下命令把hadoop-2.7.2文件夾復制到slave1和slave2節點:
$cd /app/spark
$scp -r hadoop-2.7.2 spark@slave1:/app/spark/
$scp -r hadoop-2.7.2 spark@slave2:/app/spark/
$cd /app/spark/hadoop-2.7.2/
$./bin/hdfs namenode -format
圖 附錄A?7 格式化NameNode
使用如下命令啟動HDFS:
$cd /app/spark/hadoop-2.7.2/sbin
$./start-dfs.sh
此時在master上面運行的進程有:NameNode、SecondaryNameNode和DataNode,而slave1和slave2上面運行的進程有:NameNode和DataNode
使用如下命令啟動YARN:
$cd /app/spark/hadoop-2.7.2/sbin
$./start-yarn.sh
此時在master上運行的進程有:NameNode、SecondaryNameNode、DataNode、NodeManager和ResourceManager,而slave1和slave2上面運行的進程有:NameNode、DataNode和NodeManager。

![clip_image002[8] clip_image002[8]](https://images2015.cnblogs.com/blog/107289/201612/107289-20161218223231495-1489107991.jpg)
![clip_image004[8] clip_image004[8]](https://images2015.cnblogs.com/blog/107289/201612/107289-20161218223232698-106159959.jpg)
![clip_image006[8] clip_image006[8]](https://images2015.cnblogs.com/blog/107289/201612/107289-20161218223233714-127738754.jpg)
![clip_image008[8] clip_image008[8]](https://images2015.cnblogs.com/blog/107289/201612/107289-20161218223235026-1117622080.jpg)
![clip_image010[8] clip_image010[8]](https://images2015.cnblogs.com/blog/107289/201612/107289-20161218223236792-1489334598.jpg)
![clip_image012[8] clip_image012[8]](https://images2015.cnblogs.com/blog/107289/201612/107289-20161218223238073-393771881.jpg)
![clip_image014[8] clip_image014[8]](https://images2015.cnblogs.com/blog/107289/201612/107289-20161218223239104-1260697714.jpg)
![clip_image016[8] clip_image016[8]](https://images2015.cnblogs.com/blog/107289/201612/107289-20161218223240183-2115479666.jpg)
![clip_image018[8] clip_image018[8]](https://images2015.cnblogs.com/blog/107289/201612/107289-20161218223241261-1328911048.gif)
浙公網安備 33010602011771號