Hadoop 在使用./spark-ec2部署的集群上更改JDK

Hadoop 在使用./spark-ec2部署的集群上更改JDK,hadoop,amazon-ec2,apache-spark,spark-ec2,Hadoop,Amazon Ec2,Apache Spark,Spark Ec2,我使用Spark部署了一个Amazon EC2集群,如下所示: ~/spark-ec2 -k spark -i ~/.ssh/spark.pem -s 2 --region=eu-west-1 --spark-version=1.3.1 launch spark-cluster 我先将所需的文件复制到主文件,然后使用以下方法从主文件复制到HDFS: ephemeral-hdfs/bin/hadoop fs -put ~/ANTICOR_2_10000.txt ~/user/root/ANTIC

我使用Spark部署了一个Amazon EC2集群,如下所示:

~/spark-ec2 -k spark -i ~/.ssh/spark.pem -s 2 --region=eu-west-1 --spark-version=1.3.1 launch spark-cluster
我先将所需的文件复制到主文件,然后使用以下方法从主文件复制到HDFS:

ephemeral-hdfs/bin/hadoop fs -put ~/ANTICOR_2_10000.txt ~/user/root/ANTICOR_2_10000.txt
我有一个我想运行的jar,它是用JDK 8编译的(我使用了很多Java 8特性),所以我用
scp
复制它,并用以下代码运行它:

spark/bin/spark-submit --master spark://public_dns_with_port --class package.name.to.Main job.jar -f hdfs://public_dns:~/ANTICOR_2_10000.txt
问题是
spark-ec2
用JDK7加载集群,因此我得到了
不受支持的主要.次要版本52.0

我的问题是,我需要在哪些地方将JDK7更改为JDK8

到目前为止,我在master上执行的步骤是:

  • 使用yum或up2date工具安装JDK8
  • 使用
    sudo替代方案--config java
    并将首选java更改为java-8
  • export JAVA_HOME=/usr/lib/jvm/openjdk-8

我必须对所有节点执行此操作吗?另外,我是否需要更改hadoop在短暂的hdfs/conf/hadoop env.sh中使用的java路径,或者是否有其他我遗漏的地方?

不幸的是,Amazon还没有提供现成的java 8安装:


您看过如何在运行的实例上安装它吗?

不幸的是,Amazon还没有提供现成的Java 8安装


您看到如何在运行的实例上安装它了吗?

以下是我为所有java安装所做的工作,这些安装与默认安装提供的版本不同:-

  • 在每台机器/节点上配置JAVA_HOME环境变量:- 导出JAVA_HOME=/HOME/ec2 user/softwares/jdk1.7.0_25

  • 修改默认路径,并将“java/bin”目录放在所有节点/机器上路径的其余部分之前。 导出路径=/home/ec2 user/softwares/jdk1.7.0_25/bin/:$M2:$SCALA_home/bin/:$HIVE_home/bin/:$PATH:


  • 上述操作需要使用同一个“OS用户”完成,该用户用于执行/拥有spark master/worker进程。

    以下是我为所有java安装所做的操作,这些安装与默认安装提供的版本不同:-

  • 在每台机器/节点上配置JAVA_HOME环境变量:- 导出JAVA_HOME=/HOME/ec2 user/softwares/jdk1.7.0_25

  • 修改默认路径,并将“java/bin”目录放在所有节点/机器上路径的其余部分之前。 导出路径=/home/ec2 user/softwares/jdk1.7.0_25/bin/:$M2:$SCALA_home/bin/:$HIVE_home/bin/:$PATH:


  • 上述操作需要使用用于执行/拥有spark master/worker进程的同一个“OS用户”来完成。

    有没有一种方法可以对所有从机执行一次操作?@M-T-a没有,我没有找到。我发现最有效的方法是在所有从机中使用Terminator()进行ssh,并立即手动更改所有从机中的JDK。作为将来的参考,
    pssh-I-h/root/spark-ec2/slaves
    肯定会在所有从机上运行此命令。@M-T-A我明白了,谢谢你的提示!有没有办法让所有的奴隶都做一次?@M-T-a不,我没有找到。我发现最有效的方法是在所有从机中使用Terminator()进行ssh,并立即手动更改所有从机中的JDK。作为将来的参考,
    pssh-I-h/root/spark-ec2/slaves
    肯定会在所有从机上运行此命令。@M-T-A我明白了,谢谢你的提示!