關於hadoop中經常用到的一些指令碼
阿新 • • 發佈:2018-11-29
準備: 前提是執行命令的機器必須可是同ssh免密到其他機器上,而且所有的機器必須安裝rsync
ssh
1、 ssh-keygen, 生成祕鑰
2、 ssh-copy-id 192.168.136.128(ip地址)
需要把公鑰考到本機器和要執行命令的其他機器
1、同步資料夾
yum -y install rsync
把這個檔案放到/usr/local/bin目錄下就可在任何地方執行了
使用直接使用 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=1; host<6; host++)); do
#一共5臺機器,bigdata01 到bigdata05
#echo $pdir/$fname [email protected]$host:$pdir echo -- ------------- bigdata0$host ----------------
rsync -rvl $pdir/$fname [email protected]$host:$pdir
done
2、xcall.sh jps
可以直接在一臺機器上檢視所有的程序
通過xcall.sh jps 可以檢視所有機器的所有程序
#!/bin/bash
params=[email protected]
i=1
for (( i=1 ; i <= 5 ; i = $i + 1 )) ; do
#這裡bigdata是自己的hostname名稱, 我的是bigdata01- 05
#所以在前面加了個0
echo ============= bigdata0$i $params =============
ssh bigdata0$i "$params"
done
一個命令開啟所有服務
檔名是hadoop.sh
使用
hadoop.sh start
hadoop.sh stop
#!/bin/bash
#輸入的命令 start| stop
params=[email protected]
#要啟動的命令的路徑,當然除此之外還可以根據需求配其他的
#比如說啟動zk服務等
yarn="/home/bigdata/install/hadoop-2.5.0-cdh5.3.6/sbin/${params}-yarn.sh"
dfs="/home/bigdata/install/hadoop-2.5.0-cdh5.3.6/sbin/${params}-dfs.sh"
jb="/home/bigdata/install/hadoop-2.5.0-cdh5.3.6/sbin/mr-jobhistory-daemon.sh ${params} historyserver"
http="/home/bigdata/install/hadoop-2.5.0-cdh5.3.6/sbin/httpfs.sh ${params}"
rm="/home/bigdata/install/hadoop-2.5.0-cdh5.3.6/sbin/yarn-daemon.sh ${params} resourcemanager"
echo ============= bigdata01 $dfs =============
$http
echo ============= bigdata01 $dfs =============
ssh bigdata01 $dfs
echo ============= bigdata01 $yarn =============
ssh bigdata01 $yarn
i=1
for (( i=1 ; i <= 3 ; i = $i + 1 )) ; do
echo ============= bigdata0$i $params =============
ssh bigdata0$i "$rm"
ssh bigdata0$i "$jb"
done
**
注意:如果出現-bash: /usr/local/bin/xcall.sh: /bin/bash^M: bad interpreter:
**
需要在行末模式下輸入set fileformat=unix,然後回車
出現這個錯誤的原因可能是因為你在windos中編輯了
當set ff 看到如下,就表示可以啦