我的未來式 (《愛情公寓》十周年合唱版)
愛情公寓全體今天學習完全分布式運行模式,完成了這一節,才算是真正踏進大數據大門。
本節主要概括了 scp,rsync命令的使用,寫分髮腳本。
1.分髮腳本
1) cp
(1) 基本語法:
cp -r source destination
命令 遞歸 要拷貝的文件路徑/名稱 目的路徑/名稱
(2) 例子:
#將/abc目錄下所有文件 複製到/def下
cp -r /abc /def
2) scp (secure copy)安全拷貝
(1)scp定義:
scp可以實現伺服器與伺服器之間的數據拷貝。(from server1 to server2)
(2)基本語法
scp -r source destination
命令 遞歸 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱
(3)例子
#1.在hadoop131上,將hadoop131中/opt/module目錄下的軟體拷貝到
hadoop132上。
scp -r hadoop131:/opt/module/hadoop-2.7.2 hadoop132:/opt/module
#2.在hadoop131上,將hadoop131中/etc/profile目錄下的軟體拷貝到hadoop132上。
scp -r hadoop131:/etc/profile hadoop132:/opt/module
(4)tips
(a)遠程把Hadoop131上的/opt/module拷貝到Hadoop132相同的位置
(b)只複製文件內容,不複製時間戳
(c)命令執行拷貝位置不受限制,hadoop131,hadoop132兩臺機器都可以
3)rsync 遠程同步工具
rsync主要用於備份和鏡像。具有速度快、避免複製相同內容和支持符號連結的優點。
rsync和scp區別:用rsync做文件的複製要比scp的速度快,rsync只對差異文件做更新。scp是把所有文件都複製過去。
(1)基本語法
rsync -rvl source destination
命令 選項參數 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱
選項參數說明
選項 功能
r 遞歸
v 顯示複製過程
l 拷貝符合連接
(2)例子#在hadoop132(需要拷貝的機器上執行命令)
#將hadoop131:/opt/module/jdk1.8.0_144拷貝到 #hadoop132:/opt/module下
rsync -rvl hadoop131:/opt/module/jdk1.8.0_144 /opt/module
rsync -rvl hadoop131:/etc/profile /etc/profile
(3)tips
//歸檔拷貝,完全拷貝
//只能在要拷貝的機器上執行命令
4)寫個分髮腳本(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=132; host<135; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
tips:
$# 是傳給腳本的參數個數
$0 是腳本本身的名字
$1 是傳遞給該shell腳本的第一個參數
$2 是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表
$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個
$$ 是腳本運行的當前進程ID號
$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤
2.快速分發hadoop和java
(1)使用腳本分發java、hadoop、/etc/profile(配置環境變量,該文件需切換到root用戶執行)
遇到問題:
a. Permission denied, please try again.如何解決?
解決方法:
1)確認密碼是否正確
2)分發的路徑沒有這個文件夾 ,找不到相應路徑
3)普通用戶ssh免密登陸(後續文章詳細寫!!!)
4)切換到root用戶執行命令,輸入root用戶密碼!!!
b.Linux中 /etc/profile 環境變量配置錯誤導致 vi,yum,ll等命令無法使用,失效,如何解決?
解決方法:
1)在命令行中輸入:export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
2) vi /etc/profile 將配置的環境變量刪除或者注釋掉
3)source /etc/profile 使配置文件生效
(2)source /etc/profile 使配置文件生效
3.集群配置
詳見下一篇文章:Hadoop_05_完全分布式運行模式(集群配置)