準備工作:

安裝jdk

克隆2臺虛擬機器完成後:新的2臺虛擬機器,請務必依次修改3臺虛擬機器的ip地址和主機名稱【建議三臺主機名稱依次叫做:master、node1、node2 】(虛擬機器的克隆,前面的部落格,三臺虛擬機器都要開機)

這裡我們安裝的是Hadoop2.7.6版本:https://hadoop.apache.org/releases.html

1、設定主機名與ip的對映,修改配置檔案命令:vi /etc/hosts

2、將hosts檔案拷貝到node1和node2節點

命令:

scp /etc/hosts node1:/etc/hosts

scp /etc/hosts node2:/etc/hosts

這裡我們可以在bin目錄下面寫一個分發的指令碼

cd /bin/

vim xsync

#!/bin/bash
#1. 判斷引數個數
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍歷叢集所有機器
for host in master node1 node2
do
echo ==================== $host ====================
#3. 遍歷所有目錄,挨個傳送
for file in $@
do
#4. 判斷檔案是否存在
if [ -e $file ]
then
#5. 獲取父目錄
pdir=$(cd -P $(dirname $file); pwd)
#6. 獲取當前檔案的名稱
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done

注意:完成上述操作後,三臺需要重新整理一下配置環境變數的檔案:source /etc/profile

4、關閉防火牆(三臺都要操作),使用命令:service iptables stop

5、關閉防火牆的自動啟動(三臺都要操作),使用命令:chkconfig iptables off

6、設定ssh免密碼登入(只在Master 這臺主機操作)

主節點執行命令  ssh-keygen -t rsa     產生金鑰 一直回車

執行命令

7、將金鑰拷貝到其他兩個子節點,命令如下:

ssh-copy-id -i node1

ssh-copy-id -i node2

實現免密碼登入到子節點。

8、將hadoop的jar包先上傳到虛擬機器/usr/local/module,使用xftp來上傳

 9、解壓Hadoop

tar -xvf hadoop-2.7.6.tar.gz -C /usr/local/soft/

10、配置環境變數

這是我配置的環境變數,一定要有jdk和Hadoop

vim /etc/profile

export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
export REDIS_HOME=/usr/local/soft/redis/
export PATH=$PATH:$REDIS_HOME/bin
export HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

分發給node1與node2:xsync  /etc/profile

三臺都需要:source /etc/profile

11、修改配置檔案

hadoop 配置檔案在/usr/local/soft/hadoop-2.7.6/etc/hadoop/

cd /usr/local/soft/hadoop-2.7.6/etc/hadoop/

11.1、hadoop-env.sh : Hadoop 環境配置檔案
vim hadoop-env.sh
修改JAVA_HOME
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171

11.2、slaves : 從節點列表(datanode)
vim slaves
增加node1, node2

11.3、core-site.xml : hadoop核心配置檔案
vim core-site.xml

在configuration中間增加以下內容

<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property> <property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/tmp</value>
</property> <property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>

11.4、hdfs-site.xml : hdfs配置檔案

vim hdfs-site.xml

在configuration中間增加以下內容

<property>
<name>dfs.replication</name>
<value>1</value>
</property> <property>
<name>dfs.permissions</name>
<value>false</value>
</property>

11.5、yarn-site.xml: yarn配置檔案

vim yarn-site.xml

在configuration中間增加以下內容

<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property> <property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property> <property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property> <property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property> <property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>20480</value>
</property> <property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property> <property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>

 11.6、mapred-site.xml: mapreduce配置檔案

在這裡需要重新命名mapred-site.xml.template

命令:mv mapred-site.xml.template mapred-site.xml

vim 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>

12、將hadoop安裝檔案同步到子節點

xsync  /usr/local/soft/hadoop-2.7.6

13、格式化namenode

hdfs namenode -format

14、啟動hadoop

在Hadoop的sbin目錄下執行:

    /usr/local/soft/hadoop-2.7.6/sbin

    啟動命令:start-all.sh

15、訪問hdfs頁面驗證是否安裝成功

http://master:50070

用Java內部命令jps來看是否成功

這裡同樣我們可以使用指令碼檢視三臺節點的jps

在cd /bin/ 目錄下 vim jpsall

#!/bin/bash

for i in hadoop102 hadoop103 hadoop104
do
echo =============== $i ===============
ssh $i "$*" "/usr/local/soft/jdk1.8.0_212/bin/jps"
done

16、如果安裝失敗
stop-all.sh
再次重啟的時候
1需要手動將每個節點的tmp目錄刪除: 所有節點都要刪除
rm -rf /usr/local/soft/hadoop-2.7.6/tmp
然後執行將namenode格式化
2在主節點執行命令:
hdfs namenode -format
3啟動hadoop
start-all.sh