hadoop集群管理之統一執行

2021-08-08 17:21:53 字數 1738 閱讀 6942

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個節點的小規模集群中,可以將...