我在群集模式下配置MPJ Express时遇到问题。
我正在按照给出的指南 http://mpj-express.org/docs/guides/linuxguide.pdf
环境变量已成功初始化为
1) 设置MPJ_HOME和PATH变量
a。导出MPJ_HOME = / path / to / mpj /
b。导出路径= $ PATH:$ MPJ_HOME / bin
2) 这些机器也成功添加了机器文件
mpjboot机器
显示消息 开始mpjd ...
3) 下一步是通过
测试HelloWolrd程序 编译:
javac -cp .: $ MPJ_HOME / lib / mpj.jar HelloWorld.java
10.执行:mpjrun.sh -np 2 -dev niodev HelloWorld
当我这样做时,我收到此错误
runtime.MPJRuntimeException:无法连接到计算机和端口上的守护程序< 10000>
我使用的平台是
任何帮助或解决方案都表示赞赏..
谢谢
答案 0 :(得分:1)
检查群集节点环境变量。
尝试将vars添加到每个群集节点中的.bashrc
(从主节点ssh到它):
echo 'export MPJ_HOME=/home/<user>/path/to/mpj' >> ~/.bashrc
echo 'export PATH=$PATH:$MPJ_HOME/bin' >> ~/.bashrc
或者,打开记录/conf/wrapper.conf
,运行并报告您的发现。
答案 1 :(得分:1)
这是我第一次在stackOverflow中给出答案。 我在我的centos6.3中使用jdk1.6.0_32设置了MPJExpress-v0_42,最后一切似乎都没问题。
守护程序未运行可能会发生这种情况。您可以尝试如下:
sudo netstat -anp |grep port
检查端口是否正在侦听并获取processId。 在我的机器中,在使用mpjdaemon -boot localhost
启动守护程序后,我使用sudo netstat -apn |grep 4000
命令检查端口并得到以下内容。
tcp 0 0 :::40000 :::* LISTEN 8766/java
tcp 0 0 :::40001 :::* LISTEN 8766/java
端口在$MPJ_HOME/conf/wrap.conf
中配置,我的配置如下:
#port number for the daemon.
wrapper.app.parameter.2=40001
#Socket Server Port Number.
wrapper.app.parameter.3=40000
我还使用jps -m
命令获取java守护进程,结果如下:
8766 MPJDaemon 40001
30850 Jps -m
此处8766
是netstat
显示的processId,MPJDaemon
是守护进程,40001
是侦听端口。
在您的问题中,您无法连接守护程序进程。 执行以下操作:
netstat
找不到该端口,则通常表示MPJDaemon is not running
。mpjboot machines
或mpjrun.sh -np 2 -dev niodev HelloWorld
等群集命令。您可以使用mpjdaemon -boot localhost
测试当前计算机,如果配置正常,您可以使用localhost
项设置计算机文件并运行群集命令。我遇到的其他问题。
首先我使用MPJ-v0_44.zip
和jdk1.6.0
,但它无法编译并发出错误ProcessBuilder has no method of "interNIO"(something like that)
。我分析源代码和猜测可能是因为JDK版本更低。鉴于JDK的升级很复杂,我找到了mpj-v0_42.zip
的另一个MPJ版本并编译好了。
mpjdaemon -boot localhost
没有错误消息,但MPJDeamon没有运行。将MPJ_HOME
之类的环境变量从.bash_profile
配置为.bashrc
后,问题就解决了。我不知道为什么。
jps -m
说&#34; MPJDeamon正在运行&#34; ,但是mpjdaemon -status localhost
说&#34; mpjdeamon没有运行&#34;。我使用命令(ssh localhost nohup 'jps -m'
)并且它找不到jps
命令,但我使用jps命令工作正常。我猜也许它和上面的问题一样。未在.bashrc
的路径环境变量中配置jps的路径。因此,在PATH=/jpspath:$PATH
中添加一行.bashrc
后,一切正常。