1. 程式人生 > >hadoop用指令碼啟動

hadoop用指令碼啟動

hadoop中需要啟動的配置太多了,今天寫了個指令碼,實現了一鍵 啟動hadoop,指令碼寫法如下圖


這個指令碼的前提是,伺服器之間配置了ssh無祕鑰登入!!!!!

執行指令碼時,伺服器提示我輸入密碼,但是我的機器已經配置了無祕鑰登入,最後在啟

zookeeper時提示啟動成功,但是沒有程序:如下



原因:

首先需要知道 互動式shell和非互動式shell、登入shell和非登入shell是有區別的 在登入shell裡,環境資訊需要讀取/etc/profile和~ /.bash_profile, ~/.bash_login, and ~/.profile按順序最先的一個,並執行其中的命令。除非被 --noprofile選項禁止了;
在非登入shell裡,環境資訊只讀取 /etc/bash.bashrc和~/.bashrc 手工執行是屬於登陸shell,指令碼執行資料非登陸shell,而我的linux環境配置中只對/etc/profile進行了jdk1.7等環境的配置,所以指令碼執行/usr/local/zookeeper/bin/zkServer.sh start 啟動zookeeper失敗了     解決方法(下面3個方法任選1): 1、指令碼程式碼中新增“source /etc/profile;” 改為:ssh crxy$i "source /etc/profile;/usr/local/zookeeper/bin/zkServer.sh start"  2、把profile的配置資訊echo到.bashrc中  echo 'source /etc/profile' >> ~/.bashrc 3、在/zookeeper/bin/zkEnv.sh的中開始位置新增 export JAVA_HOME=/usr/local/jdk1.7.0_45(就像hadoop中對hadoop-env.sh的配置一樣)
 解決了這個問題,就以方便的通過指令碼實現hadoop叢集的啟動與關閉了,避免了繁瑣的手工操作^-^