在集群模式下配置MPJ Express时遇到问题。
我是按照给出的指南http://mpj-express.org/docs/guides/linuxguide.pdf
环境变量被成功初始化为
1)设置MPJ_HOME和PATH变量
。 export MPJ_HOME=/path/to/mpj/
b。 export PATH=$PATH:$MPJ_HOME/bin
2)还可以使用机器文件
成功添加机器。<<p> mpjboot机器/strong>显示消息开始mpjd…
3)下一步是通过
测试helloworld程序编译:javac -cp .:$MPJ_HOME/lib/mpj.jar HelloWorld.java
10. 执行:mpjrun.sh -np 2 -dev niodev HelloWorld
当我这样做的时候,我得到这个错误
运行时。MPJRuntimeException: Cannot connect to daemon at machine and port <10000>
我使用的平台是
- 安装Solaris 10 OS的Sun Ultra 25工作站
- 我已经做了一个2台机器的快速以太网集群
- ssh在每台机器上以root用户启用
- 网络建立良好
任何帮助或解决方案都是感激的。
谢谢
检查集群节点环境变量
尝试在每个集群节点上为.bashrc
添加变量(从主节点ssh到它):
echo 'export MPJ_HOME=/home/<user>/path/to/mpj' >> ~/.bashrc
echo 'export PATH=$PATH:$MPJ_HOME/bin' >> ~/.bashrc
或者,打开日志/conf/wrapper.conf
,运行并报告您的发现
这是我第一次在stackOverflow中给出答案。我用jdk1.6.0_32在centos6.3中设置了MPJExpress-v0_42,最后一切似乎都没问题。
问题1:无法连接到机器和端口
上的守护进程可能发生守护进程未运行的情况。您可以尝试如下:
- 您可以使用
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
为processId,如netstat
所示,MPJDaemon
为守护进程,40001
为监听端口。
在你的问题中,你不能连接守护进程。
- 应该检查端口。如果您无法使用
netstat
找到端口,则通常意味着MPJDaemon is not running
。 - 可以肯定的是,您也可以使用jps来检查进程。可能进程正在运行,但端口是另一个
- 不要使用
mpjboot machines
或mpjrun.sh -np 2 -dev niodev HelloWorld
之类的集群命令。你可以使用mpjdaemon -boot localhost
来测试当前的机器,如果它被配置好了,你可以用localhost
的一个项目来设置机器文件,并运行集群命令。
我遇到的其他问题
问题2:使用ant编译失败
起初我使用MPJ-v0_44.zip
和jdk1.6.0
,但它无法编译并给出ProcessBuilder has no method of "interNIO"(something like that)
的错误。我分析了源代码,猜测这可能是因为JDK版本稍微低一些。考虑到升级JDK有点复杂,我找到了另一个MPJ版本的mpj-v0_42.zip
,它编译得很好。
问题3:mpjdaemon -boot localhost
没有错误消息,但mpjdaemon没有运行
在我将MPJ_HOME
等环境变量从.bash_profile
配置为.bashrc
后,问题就解决了。我不知道为什么。
问题4:命令jps -m
显示"MPJDeamon is running",mpjdaemon -status localhost
显示"MPJDeamon is not running"。
我使用命令(ssh localhost nohup 'jps -m'
),它说jps
命令未找到,但我使用jps命令工作正常。我想也许是和上面一样的问题。.bashrc
的path环境变量中没有配置jps的路径。因此,在.bashrc
中添加一行PATH=/jpspath:$PATH
后,一切都工作正常。