一.hadoop的運行模式
二.scp命令————基本使用
三.scp命令———拓展使用
四.rsync遠程同步
五.xsync腳本集群之間的同步
一.hadoop的運行模式
?hadoop一共有如下三種運行方式:
1. 本地運行。數據存儲在linux本地,測試偶爾用一下。我們上一節課使用的就是本地運行模式hadoop100。
2.?偽分布式。在一臺機器上模擬出 Hadoop 分布式系統的各個組件,各個組件在邏輯上是分離的,但是都運行在同一臺物理機器上,以此來模擬分布式環境。
3. 完全分布式。數據存儲在HDFS,多臺服務器工作,企業中大量使用。
要在本地去模擬這個真實的場景功能,我們需要做好如下的準備:
?1)準備3臺客戶機(關閉防火墻、靜態IP、主機名稱)
?2)安裝javaJDK,安裝Hadoop,并配置環境變量
3)配置集群
4)單點啟動
?5)配置ssh
?6)群起并測試集群
現在我們來看看按照JDK和Hadoop并配置環境變量的工作。有兩種思路:
1. 每臺機器都去手動安裝一次(上傳jar包再去解壓)。
2. 把一臺機器裝好,把module 拷貝到其他的機器。這樣就不需要省略了上傳和解壓的工作了。?
二.scp命令————基本使用
現在要學一個新的命令:?scp。它可以實現服務器與服務器之間的數據拷貝。
1.基本語法
scp ???-r ???????$pdir/$fname ???$user@$host:$pdir/$fname
說明:
(1)-r: 表示遞歸拷貝。如果要拷貝的是文件夾,就把文件夾下的內容都拷貝
(2)$pdir/$fname: 要拷貝的文件路徑/名稱 ??
(3)$user@host:$pdir/$fname: 目的地用戶@主機:目的地路徑/名稱
注意:要輸入相應的賬號和密碼!
2.案例操作
來,我們一起看下案例實操。
背景
假設你已經:
(1)在兩臺虛擬機(hadoop100、hadoop101)都已經創建好了/opt/module,/opt/software兩個目錄
(2)在hadoop100這臺機器中已經安裝了jdk和hadoop。
目標
現在的目標是:要把hadoop100上的jdk文件夾拷貝到hadoop101中的相同的目錄下。
操作
我們一起看具體操作:
1. 啟動虛擬機。把hadoop100和hadoop101都啟動。
2. 進入到hadoop100
3. 命令:
scp -r /opt/module/jdk1.8.0_212/??root@hadoop101:/opt/module/jdk1.8.0_212/
三.scp命令———拓展使用
- 拉取。在hadoop101上,拉取hadoop100機器上的內容(如下左圖)。
?
- 推送。在hadoop100機器上,把文件推送到hadoop101機器上(如上右圖)。
- 搭橋。在hadoop101機器上,把hadoop100的文件傳遞到hadoop102上
?
任務1:在hadoop102上,將hadoop101中/opt/module/hadoop-3.1.3目錄拷貝到hadoop102上。
分析:使用scp進行拉取
操作:
- 先登錄到hadoop2
- 使用命令:
scp -r root@hadoop101:/opt/module/hadoop-3.1.3 /opt/module/
任務2:在hadoop101上操作,將hadoop100中/opt/module目錄下所有目錄拷貝到hadoop102上。
分析:使用scp進行搭橋
操作:
- 登錄hadoop101
- 使用命令:
scp -r root@hadoop100:/opt/module/* root@hadoop102:/opt/module
四.rsync遠程同步
rsync主要用于備份和鏡像。具有速度快、避免復制相同內容和支持符號鏈接的優點。
rsync和scp區別是:rsync只對差異文件做更新,而scp是把所有文件都復制過去,所以它的效果更高一些。
1. 基本語法
rsync ???-av ??????$pdir/$fname ????????????$user@$host:$pdir/$fname
語法說明:
(1)-a:歸檔拷貝,盡可能讓拷貝的文件之間保持一致。
(2)-v:顯示拷貝過程。
(3)$pdir/$fname: 要拷貝的文件路徑/名稱
(4)$user@host:$pdir/$fname: 目的地用戶@主機:目的地路徑/名稱
實操:
?rsync -av /opt/conf/ root@hadoop101:/opt/conf
第一步:在兩臺機器上準備文件。
在hadoop100的/opt/conf/?新建1.txt, 2.txt, 3.txt, 4.txt
做一次同步。
[root@hadoop100?]$ rsync -av /opt/conf/?root@hadoop101:/opt/conf/
它會在hadoop101上創建conf目錄。
第二步:在hadoop100中,添加新文件,5.txt, 6.txt, 7.txt
第三步:使用命令把新添加的文件同步到hadoop101中。
命令如下:
[root@hadoop100?]$ rsync -av /opt/conf/?root@hadoop101:/opt/conf/
請特別注意目錄最后的尾/。有/表示拷貝這文件夾下的內容,沒有/表示會拷貝這個文件夾
五.xsync腳本集群之間的同步
在root目錄建立bin文件夾,在bin內建立xsync文件,并在文件中輸入腳本
chmod +x xsync
2.步驟
(1)在/root/bin目錄下創建xsync文件。在這個
(2)在該文件中編寫如下代碼。這個部分的代碼不需要會寫,能看懂,了解即可。
#!/bin/bash
#1. 判斷參數個數
if [ $# -lt 1 ]
then
????echo Not Enough Arguement!
????exit;
fi
#2. 遍歷集群所有機器
for host in hadoop100?hadoop101?hadoop102
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
?(3)修改執行權限。此時,我們去查看文件,可以看到它的顏色是灰色的,不具備執行權限(如下圖)
接下來要通過命令: chmod +x xsync(或者是chmod 777 xsync)
重新查看它的顏色,它現在已經變成執行的腳本了(如下圖)。
(4)測試使用。把這個腳本同步到其他的機器中。
[root@hadoop100?~]$?xsync /root/bin/
課堂小結?
- scp的作用是什么?
- 如果當前在A機器上,要把A機器上的/etc/tst下的所有內容拷貝到B機器上的/etc/tst目錄下,應該的命令應該怎么寫?
- rsync與scp的區別是什么?
答案:
1.實現服務器和服務器之間數據拷貝
2.scp -r /etc/tst/B機器的用戶名@主機名:/etc/tst
3.rsync和scp區別是:rsync只對差異文件做更新,而scp是把所有文件都復制過去,所以它的效果更高一些。