所以,我们在powerpc机器(64位)上运行hadoop。它使用ibmjdk运行。但是,在hadoop map reduce程序中,会产生执行jar程序的不同进程(使用processbuilder类)。问题是这些程序在ibmjdk的虚拟机上运行时有问题,因此需要openjdk。同样,hadoop在powerpc上运行openjdk时也有问题,所以我想知道,是否可以使用不同版本的java执行jar文件。例如,在本例中,hadoop使用ibmjdk,而map reduce程序中执行的jar文件使用openjdk。基本上,我们需要为同时运行的程序使用不同的java虚拟机。
2条答案
按热度按时间eqfvzcg81#
您在评论中提供了最重要的信息—通过
ProcessBuilder
班级。这个类在操作系统级别进行调用,因此您可以用它启动任何进程,并且它们与启动它们的java进程完全分离。所以一般的答案是“是的,这是可能的”。只要确保ProcessBuilder
调用不同的java安装。w8f9ii692#
您的java版本只是到相关安装目录的链接。因此,当您安装各种(下载内容如下:
http://www.ibm.com/developerworks/java/jdk/linux/download.html
)然后你只需要改变链接(ln -s
)到那个子目录。例如,我们在系统上保留了4个java版本:其他程序只需调用
/usr/bin/java
或者在hadoop调用其他东西时需要的版本的直接路径。