hadoop集群ssh打通之後,再進行一些統一的指令碼執行等等操作時,可以通過指令碼的方式進行,例如:全集群檢視程序,統一分發配置檔案等等。通過ssh+linux指令碼,在namenode上就可以完成對整個集群的管理,這種方法也大大節省了集群的管理效率。
指令碼內容
if [ $#
-lt2 ]
then
echo
"usage: ./runremotecmd.sh command machinetag"
echo
"usage: ./runremotecmd.sh command machinetag conffile"
exit
fi
這裡首先判斷傳輸引數,指令碼需要2個引數進行傳遞,1:需要執行的命令2:指令碼執行機器tag。這個tag在下面介紹配置檔案時進行描述。
cmd=$1
tag=$2
if [ 'a'
$3'a' == 'aa' ]
then
conffile=/usr/local/soft/shell/deploy.conf
else
conffile=$3
fi
以上**是對引數的描述,必要的引數即上面說到的1、2,引數3是可配置項,可根據自己本身命令的需求,重新定義配置檔案。
if [ -f
$conffile ]
then
for server in `cat $conffile|grep -v '^#'|grep ','
$tag
','|awk -f','
''` do
echo
"*******************$server***************************"
ssh $server
"source /etc/profile; $cmd"
done
else
echo
"error: please assign config file or run runremotecmd.sh command with deploy.conf in same directory"
fi
以上是本次分享**的核心部分了,通過遍歷標記tag的伺服器,統一通過ssh的方法進入,並且執行相關命令。注意:執行命令之前,去要source你的環境變數,也就是source /etc/profile部分要按照你自己的環境修改。
配置檔案
上面說到需要通過配置檔案進行配置,對集群內的伺服器進行tag操作,下面我們對配置檔案進行描述:
namenode,all,nn,
datanode1,all,dn,
datanode2,all,dn,
datanode3,all,dn,
上述配置檔案當中,dn、all就是對應伺服器的標籤,在實際管理過程中,標籤的數量肯定會更多,通過逗號分隔的方式,向後新增伺服器標籤就可以了。
執行舉例,假如我們的指令碼名為run.sh,我們要檢視整個集群的hadoop程序情況
run.sh
"jps" all
「`
最後,個人建議,將指令碼加入的path當中。
Hadoop集群批量命令執行
pdsh r ssh w node 10 0 0 5 hostname r 指定傳輸方式,預設為rsh,本例為ssh,如果希望ssh傳輸需要另行安裝pdsh rcmd ssh,如果希望ssh無密碼訪問需要提前配置好。w 指定待執行命令host,也可以這樣配置,node 1 9,35,22 comma...
Hadoop系列之八 Hadoop集群
1 合併mapreduce集群與hdfs集群 在排程執行乙個作業時,將map任務等直接執行於要處理的資料所儲存的hdfs的資料節點上,可避免大量的資料傳輸,實現資料處理的本地性,進而大大提高整個過程的完成效率,這也正是hadoop集群的部署方式。如下圖所示。在乙個小於50個節點的小規模集群中,可以將...
Hadoop系列之八 Hadoop集群
1 合併mapreduce集群與hdfs集群 在排程執行乙個作業時,將map任務等直接執行於要處理的資料所儲存的hdfs的資料節點上,可避免大量的資料傳輸,實現資料處理的本地性,進而大大提高整個過程的完成效率,這也正是hadoop集群的部署方式。如下圖所示。在乙個小於50個節點的小規模集群中,可以將...