安裝Linux以及搭建Hadoop3.1.2集羣(7)——完全分佈式集羣配置

第八章:完全分佈式集羣配置

8.1 環境準備以及寫分發集羣腳本

8.1.1 虛擬機準備

主機 從機 從機
主機名 hadoop104 hadoop105 hadoop106
hostname hadoop104 hadoop105 hadoop106
IP地址 192.168.153.104 192.168.153.105 192.168.153.106

8.1.2 編寫集羣分發腳本xsync

  1. scp(secure copy)安全拷貝
    (1)scp定義:
    scp可以實現服務器與服務器之間的數據拷貝。(from server1 to server2)
    (2)基本語法
scp -r $pdir/$fname $user@hadoop$host:$pdir/$fname

命令 遞歸 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱
(3)案例實操
(a)在hadoop104上,將hadoop104中/opt/module目錄下的軟件拷貝到hadoop105上。

[zpark@hadoop104 /]$ scp -r hadoop104:/opt/module  hadoop105:/opt/module

(b)在hadoop106上,將hadoop104服務器上的/opt/module目錄下的軟件拷貝到hadoop106上。

[zpark@hadoop106 opt]$sudo scp -r hadoop104:/opt/module hadoop106:/opt/module

(c)在hadoop103上操作將hadoop104中/opt/module目錄下的軟件拷貝到hadoop104上。

[zpark@hadoop103 opt]$ scp -r zpark@hadoop104:/opt/module root@hadoop104:/opt/module

注意:拷貝過來的/opt/module目錄,別忘了在hadoop104、hadoop105、hadoop106上修改所有文件的,所有者和所有者組。

sudo chown zpark:zpark -R /opt/module

(d)將hadoop104中/etc/profile文件拷貝到hadoop102的/etc/profile上。

[zpark@hadoop104 ~]$ sudo scp hadoop104:/etc/profile 

hadoop102:/etc/profile
(e)將hadoop104中/etc/profile文件拷貝到hadoop103的/etc/profile上。

[zpark@hadoop104 ~]$ sudo scp hadoop104:/etc/profile

hadoop103:/etc/profile
(f)將hadoop104中/etc/profile文件拷貝到hadoop104的/etc/profile上。

[zpark@hadoop104 ~]$ sudo scp hadoop104:/etc/profile 

hadoop104:/etc/profile
注意:拷貝過來的配置文件別忘了source一下/etc/profile
2. rsync 遠程同步工具
rsync主要用於備份和鏡像。具有速度快、避免複製相同內容和支持符號鏈接的優點。
rsync和scp區別:用rsync做文件的複製要比scp的速度快,rsync只對差異文件做更新。scp是把所有文件都複製過去。
(1)基本語法

rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname

命令 選項參數 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱
選項參數說明

選項 功能
-a 歸檔拷貝
-v 顯示覆制過程

(2)案例實操
(a)把hadoop104機器上的/opt/software目錄同步到hadoop102服務器的root用戶下的/opt/目錄

[zpark@hadoop104 opt]$ rsync -av /opt/software/

hadoop102:/opt/software
3. xsync集羣分發腳本
(1)需求:循環複製文件到所有節點的相同目錄下
(2)需求分析:
(a)rsync命令原始拷貝:

rsync -av /opt/module  root@hadoop103:/opt/

(b)期望腳本:
xsync要同步的文件名稱
(c)說明:在/home/zpark/bin這個目錄下存放的腳本,zpark用戶可以在系統任何地方直接執行。
(3)腳本實現
(a)在根目錄下創建xsync目錄,並在bin目錄下xsync創建文件,文件內容如下:

[zpark@hadoop102 ~]$ vi xsync

在該文件中編寫如下代碼

#!/bin/bash
#1 獲取輸入參數個數,如果沒有參數,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi

#2 獲取文件名稱
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 獲取上級目錄到絕對路徑
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 獲取當前用戶名稱
user=`whoami`

#5 循環
for((host=103; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -av $pdir/$fname $user@hadoop$host:$pdir
done

(b)修改腳本 xsync 具有執行權限

[zpark@hadoop102 ~]$ chmod +x xsync

在這裏插入圖片描述
(c)將xsync分發到hadoop105、hadoop106
在這裏插入圖片描述
(d)查看hadoop105、hadoop106
在這裏插入圖片描述
在這裏插入圖片描述
(e)把Hadoop3.1.2拷貝到hadoop105、hadoop106裏

[zhangyong@hadoop104 module]$ xsync hadoop-3.1.2/

在這裏插入圖片描述
(f)把 jdk1.8.0_181拷貝到hadoop105、hadoop106裏

[zhangyong@hadoop104 module]$ xsync jdk1.8.0_181/

在這裏插入圖片描述
(g)把配置文件拷貝到hadoop105、hadoop106裏
在這裏插入圖片描述

查看hadoop105,hadoop106是否配置好,如果好,證明上述配置正確,如果沒有請一步一步查看

8.2集羣配置

  1. 集羣部署規劃
hadoop104 hadoop105 hadoop106
HDFS NameNode DataNode DataNode SecondaryName NodeDataNode
YARN NodeManager ResourceManager NodeManager NodeManager
  1. 配置集羣
    (1)核心配置文件
    配置core-site.xml
[zhangyong@hadoop104 hadoop]$ vi core-site.xml

在該文件中編寫如下配置

<!-- 指定HDFS中NameNode的地址 -->
<property>
	 <name>fs.defaultFS</name>
     <value>hdfs://hadoop104:9000</value>
</property>
<!-- 指定Hadoop運行時產生文件的存儲目錄 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-3.1.2/data/tmp</value>
</property>
(2)HDFS配置文件

配置hadoop-env.sh

[zhangyong@hadoop104 hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_181

配置hdfs-site.xml

[zhangyong@hadoop104 hadoop]$ vi hdfs-site.xml

在該文件中編寫如下配置

<property>
		<name>dfs.replication</name>
		<value>3</value>
</property>
<!-- 指定Hadoop輔助名稱節點主機配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop106:50090</value>
</property>

(3)YARN配置文件
配置yarn-env.sh

[zhangyong@hadoop104 hadoop]$ vi yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_181

配置yarn-site.xml

[zhangyong@hadoop104 hadoop]$ 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>hadoop105</value>
</property>

(4)MapReduce配置文件
配置mapred-env.sh

[zhangyong@hadoop104 hadoop]$ vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_181

配置mapred-site.xml

[zhangyong@hadoop104 hadoop]$ vi mapred-site.xml

在該文件中增加如下配置

<!-- 指定MR運行在Yarn上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

3.在集羣上分發配置好的Hadoop配置文件

[zhangyong@hadoop104 hadoop]$ xsync etc/

在這裏插入圖片描述
4.查看文件分發情況

[zhangyong@hadoop103 hadoop]$ cat /opt/module/hadoop-3.1.2/etc/hadoop/core-site.xml

8.3 集羣單點啓動

(1)如果集羣是第一次啓動,需要格式化NameNode

[zhangyong@hadoop104 hadoop-3.1.2]$ hdfs namenode -format

(2)在hadoop102上啓動NameNode

[zhangyong@hadoop104 hadoop-3.1.2]$ hadoop-daemon.sh start namenode
[zhangyong@hadoop104 hadoop-3.1.2]$ jps
3461 NameNode

(3)在hadoop104、hadoop105以及hadoop106上分別啓動DataNode

[zhangyong@hadoop104 hadoop-3.1.2]$ hadoop-daemon.sh start datanode
[zhangyong@hadoop104 hadoop-3.1.2]$ jps
3461 NameNode
3608 Jps
3561 DataNode
[zhangyong@hadoop105 hadoop-3.1.2]$ hadoop-daemon.sh start datanode
[zhangyong@hadoop105 hadoop-3.1.2]$ jps
3190 DataNode
3279 Jps
[zhangyong@hadoop106 hadoop-3.1.2]$ hadoop-daemon.sh start datanode
[zhangyong@hhadoop106 hadoop-3.1.2]$ jps
3237 Jps
3163 DataNode

http://hadoop104:9870/dfshealth.html#tab-datanode添加鏈接描述
訪問如下說明成功了
在這裏插入圖片描述
思考:每次都一個一個節點啓動,如果節點數增加到1000個怎麼辦?,下一章解答

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章