hadoop—是否可以使用不同版本的java运行jar文件?

gr8qqesn  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(534)

所以,我们在powerpc机器(64位)上运行hadoop。它使用ibmjdk运行。但是,在hadoop map reduce程序中,会产生执行jar程序的不同进程(使用processbuilder类)。问题是这些程序在ibmjdk的虚拟机上运行时有问题,因此需要openjdk。同样,hadoop在powerpc上运行openjdk时也有问题,所以我想知道,是否可以使用不同版本的java执行jar文件。例如,在本例中,hadoop使用ibmjdk,而map reduce程序中执行的jar文件使用openjdk。基本上,我们需要为同时运行的程序使用不同的java虚拟机。

eqfvzcg8

eqfvzcg81#

您在评论中提供了最重要的信息—通过 ProcessBuilder 班级。这个类在操作系统级别进行调用,因此您可以用它启动任何进程,并且它们与启动它们的java进程完全分离。所以一般的答案是“是的,这是可能的”。只要确保 ProcessBuilder 调用不同的java安装。

w8f9ii69

w8f9ii692#

您的java版本只是到相关安装目录的链接。因此,当您安装各种(下载内容如下: http://www.ibm.com/developerworks/java/jdk/linux/download.html )然后你只需要改变链接( ln -s )到那个子目录。例如,我们在系统上保留了4个java版本:

/usr/java/java_7_64bt
/usr/java/java_7_32bt
/usr/java/java_6_64bt
/usr/java/java_6_32bt

# ls -l /usr/java

lrwxrwxrwx. 1 root root 22 Aug  5 15:00 /usr/bin/java ->  /usr/java/java_7_64bit/java

其他程序只需调用 /usr/bin/java 或者在hadoop调用其他东西时需要的版本的直接路径。

相关问题