1. 程式人生 > 其它 >Hadoop完全分佈

Hadoop完全分佈

完全分散式搭建

Hadoop下載地址:http://archive.apache.org/dist/hadoop/core/

這裡用的Hadoop版本是:hadoop-2.6.0.tar.gz

1. 虛擬網路編輯器

NAT模式:設定閘道器和IP

比如:
閘道器:192.168.1.2
子網:192.168.1.0	子網掩碼:255.255.255.0

2. 建立虛擬機器

2.1 建立新的虛擬機器

點選左上角檔案中的新建虛擬機器進行如下步驟:

2.2 選擇Linux的iso檔案

點選編輯虛擬機器設定

2.3 開始安裝虛擬機器

點選開始此虛擬機器

1.滑鼠點進去,用上下鍵選擇第一個回車。

2.語言選擇中文。

3.點選軟體選擇、安裝位置,點選網路和主機可以先把網路連線起。

4.然後點選開始安裝

5.設定root密碼後等待安裝完成,然後點選完成配置。

6.配置完成後點選重啟。

7.接受許可,然後點選完成配置

8.然後一直前進前進,到設定全名和密碼設定好後繼續前進,完成安裝

2.4 克隆另外兩臺虛擬機器

需先把master虛擬機器關機

然後點選下一步——》選虛擬機器中的當前狀態——》建立完整克隆——》設定名稱和位置——》完成

3. 配置三臺虛擬機器的網路

這些命令最好都進入root使用者執行

3.1 配置靜態IP

命令:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

新增

BOOTPROTO="static"			//這句在檔案中已經存在,找到把他修改成static即可
IPADDR=192.168.1.110		//IP地址
GATEWAY=192.168.1.2			//閘道器
DNS1=192.168.1.2			//和閘道器保持一致即可

3.2 配置DNS

命令:

vi /etc/NetworkManager/NetworkManager.conf

新增一行內容:

dns=none

然後重啟網路管理:

systemctl restart NetworkManager.service

3.3 修改域名解析配置檔案

命令:

vi /etc/resolv.conf 

新增內容:

  nameserver 192.168.1.2	//閘道器

最後重啟網路:

service network restart

ping www.baidu.com可ping通即配置成功。

3.4 設定主機名

命令:

vi /etc/sysconfig/network

新增如下內容:

#Created by anaconda
NETWORKING=yes
HOSTNAME=master      //新增

防止重啟又恢復回去:

vi /etc/hostname //修改為本機名字

例如:(設定時可把localhost刪除)

master

3.5 設定主機與ip對映

命令:

vi /etc/hosts 

例如:

//ip地址       主機名
192.168.1.110 master
192.168.1.111 slave01
192.168.1.112 slave02

4. 防火牆關閉

三臺機器都需要

檢視防火牆狀態:

systemctl status firewalld.service

關閉防火牆:

systemctl stop firewalld.service

防止下次重啟防火牆自動啟動:

systemctl disable firewalld.service

5. 免金鑰登入配置

生成金鑰(三臺虛擬機器都需執行)

以master虛擬機器為例:

執行命令生成公鑰和私鑰:

ssh-keygen -t rsa		//這條命令一直回車

傳送到每臺伺服器(每臺都執行,一行一行的執行)

ssh-copy-id master
ssh-copy-id slave01
ssh-copy-id slave02

如圖所示:

測試是否成功

ssh master
ssh slave01
ssh slave02

成功如圖所示

檢視生成的檔案

ls ~/.ssh

6. 配置jdk(配置一臺其他兩臺複製過去即可)

使用Xftp軟體把檔案上傳到虛擬機器中

可在/opt中建立兩個目錄,一個放上傳的檔案,一個存放解壓後的檔案(可根據實際情況修改上傳檔案的目錄和解壓後的檔案的目錄)

進入/opt目錄建立兩個目錄

cd /opt  		//進入/opt目錄
mkdir module  	//建立module目錄
mkdir software  //建立software目錄

6.1 上傳檔案

用xftp上傳jdk-8u281-linux-x64.tar.gz檔案到/opt/software中

6.2 解除安裝系統自帶jdk

檢視系統是否安裝了jdk

rpm -qa | grep jdk

解除安裝自帶的jdk

rpm -qa | grep jdk | xargs -n1 rpm -e --nodeps

6.3 解壓檔案

進入/opt/software中解壓jdk到/opt/module目錄

cd /opt/software									//進入/opt/software目錄
(tar -zxvf jdk包名 -C 指定的路徑)
tar -zxvf jdk-8u281-linux-x64.tar.gz -C /opt/module //把檔案加壓到/opt/module目錄中

6.4 設定環境變數

命令:

vi /root/.bash_profile

加入下面內容:

export JAVA_HOME=/opt/module/jdk1.8.0_281		//等號後面是jdk解壓後的路徑
export PATH=$PATH:$JAVA_HOME/bin

使設定立即生效:

source /root/.bash_profile

驗證是否成功:

java -version

7. Hadoop安裝(安裝一臺其他兩臺複製過去即可)

7.1 上傳檔案

用xftp上傳hadoop-2.6.0.tar.gz檔案到/opt/software中

7.2 解壓檔案

進入/opt/software中解壓Hadoop到/opt/module目錄

cd /opt/software								//進入/opt/software目錄
(tar -zxvf Hadoop包名 -C 指定的路徑)
tar -zxvf hadoop-2.6.0.tar.gz -C /opt/module 	//把檔案加壓到/opt/module目錄中

7.3 修改Hadoop名字

進入解壓後的Hadoop目錄進行修改

cd /opt/module
mv hadoop-2.6.0 hadoop			//修改hadoop-2.6.0為hadoop

7.4 設定環境變數

命令:

vi /root/.bash_profile

加入下面內容:

export HADOOP_HOME=/opt/module/hadoop				//等號後面是hadoop解壓後的路徑
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

使設定立即生效

source /root/.bash_profile

驗證是否成功

hadoop version

這裡的環境變數配好後,可用scp複製到其他兩個節點

scp -r 存放的路徑 root@遠端登入名:複製到遠端登入名節點的路徑
slave01節點:
scp -r /root/.bash_profile root@slave01:/root/.bash_profile		//複製到slave01節點上
slave02節點:
scp -r /root/.bash_profile root@slave02:/root/.bash_profile		//複製到slave02節點上

7.5 複製jdk、Hadoop到其他兩個節點

命令:

scp -r 存放的路徑 root@遠端登入名:複製到遠端登入名節點的路徑
slave01節點:
scp -r /opt/module/ root@slave01:/opt/module	//複製到slave01節點上
slave02節點:
scp -r /opt/module/ root@slave02:/opt/module	//複製到slave02節點上

7.6 配置Hadoop

配置前進入hadoop中的/etc/hadoop

cd /opt/module/hadoop/etc/hadoop
7.6.1 修改hadoop-env.sh、yarn-env.sh、mapred-env.sh

找到JAVA_HOME修改他們的JAVA_HOME路徑

命令:

vi hadoop-env.sh		//進入hadoop-env.sh進行修改
vi yarn-env.sh			//進入yarn-env.sh進行修改
vi mapred-env.sh		//進入mapred-env.sh進行修改

配置其中的 JAVA_HOME 路徑(路徑根據自己虛擬機器上的配置來定)

export JAVA_HOME=/opt/module/jdk1.8.0_281
7.6.2 配置core-site.xml

命令:

vi core-site.xml

中新增如下:

<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://master:9000</value>
</property>
<!-- 指定 Hadoop 執行時產生檔案的儲存目錄 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/hadoop安裝路徑/data</value>
</property>
7.6.3 配置hdfs-site.xml

命令:

vi hdfs-site.xml

中新增如下:

<property>
<!--指定 HDFS 副本數量-->
	<name>dfs.replication</name>
	<value>3</value>
</property>
<!-- 指定 Hadoop 輔助名稱節點主機配置 -->
<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>master:50090</value>
</property>
7.6.4 配置yarn-site.xml

命令:

vi yarn-site.xml

中新增如下:

<!-- Reducer 獲取資料的方式 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>master</value>
</property>
7.6.5 配置mapred-site.xml

配置前先把mapred-site.xml.template名字改為mapred-site.xml

mv mapred-site.xml.template mapred-site.xml

進入mapred-site.xml進行修改

vi mapred-site.xml

中新增如下:

<!-- 指定 MR 執行在 Yarn 上 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
7.6.6 配置 slavers(意為每次啟動那些叢集)

命令:

vi slaves 

新增如下:

master
slave01
slave02
7.6.7 分發配置檔案
使用 rsync 命令,同步 {hadoop安裝路徑} / etc 下的配置檔案
rsync -av /Hadoop安裝路徑/etc/hadoop root@遠端登入名:/Hadoop安裝路徑/etc/hadoop
例如:
slave01節點:
rsync -av /opt/module/hadoop/etc/hadoop root@slave01:/opt/module/hadoop/etc
slave02節點:
rsync -av /opt/module/hadoop/etc/hadoop root@slave02:/opt/module/hadoop/etc

8 啟動叢集並測試

(1)第一次啟動要格式化

命令:

hdfs namenode -format

如果格式化報錯要刪除data和logs在進行修改之後在進行第二次格式化

(2)啟動叢集(需進入hadoop安裝目錄)

sbin/start-all.sh

(3)關閉叢集(需進入hadoop安裝目錄)

sbin/stop-all.sh

(4)驗證

jps

如圖所示:

(5)測試

Mapper測試能否跑通

建立資料夾:

hadoop fs -mkdir /input

上傳檔案到input資料夾:

hadoop fs -put 需要上傳的檔名 上傳到的檔案路徑
示例: hadoop fs -put job_list.json /input

輸出檔案:

hadoop jar MapReduceExer.jar 輸入路徑 輸出路徑(事先不能存在)
示例: hadoop jar MapReduceExer.jar /input/job_list.json /output

如圖所示:

瀏覽器檢視:

瀏覽器輸入:機器IP地址:50070-------例如:192.168.1.110:50070

如圖: