安裝Linux以及搭建Hadoop3.1.2集羣(6)—— 完全分佈式運行模式搭建

第七章:完全分佈式運行模式(開發重點)

7.1.1 虛擬機準備

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

7.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是否配置好,如果好,證明上述配置正確,如果沒有請一步一步查看

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