文章目錄
- 問題描述
- 問題分析
- 解決問題
問題描述
我這邊一共4台主機,4台主機tomca路徑一緻。我想想通過pssh指令工具直接将4台主機的tomcat啟動,指令如下:
異常如下:
異常問題:
hadoop-master: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
問題分析
首先檢查環境變量,發現我們已經配置了
[[email protected] ~]# echo $JAVA_HOME
/usr/local/jdk/jdk1.8.0_261
懷疑是通過pssh方式執行指令,不能使用全局的環境變量
解決問題
如果不能設定全局環境變量,那隻需要在tomcat啟動的時候設定環境變量即可,我們使用一台主機hadoop-slave1做測試
首先進入tomcat的bin目錄,并且編輯
[[email protected] bin]# cd /usr/local/tomcat/apache-tomcat-8.5.57/bin
[[email protected] bin]# vim catalina.sh
在檔案的第二行添加進我們的環境變量
#!/bin/sh
export JAVA_HOME="/usr/local/jdk/jdk1.8.0_261"
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
然後wq儲存退出。再執行我們的pssh指令:
發現執行成功了,再登入hadoop-slave1中驗證:
[[email protected] bin]# ps -ef|grep tomcat|grep -v grep
root 9820 1 0 18:13 ? 00:00:04 /usr/local/jdk/jdk1.8.0_261/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/apache-tomcat-8.5.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/apache-tomcat-8.5.57/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.57/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat/apache-tomcat-8.5.57 -Dcatalina.home=/usr/local/tomcat/apache-tomcat-8.5.57 -Djava.io.tmpdir=/usr/local/tomcat/apache-tomcat-8.5.57/temp org.apache.catalina.startup.Bootstrap start
發現tomcat已經啟動成功了。按照此方式,把其他伺服器的tomcat也做同樣的修改,就可解決問題了。
最終目标:
[[email protected] pssh]# pssh -h hosts.text /usr/local/tomcat/apache-tomcat-8.5.57/bin/startup.sh
[1] 18:37:04 [SUCCESS] hadoop-slave2
[2] 18:37:04 [SUCCESS] hadoop-master
[3] 18:37:04 [SUCCESS] hadoop-slave1
[4] 18:37:04 [SUCCESS] hadoop-slave3