我已经部署了一个类似Spark的AmazonEC2集群:
~/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,它是用JDK8编译的(我使用了很多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加载集群,所以我得到了Unsupported major.minor version 52.0
我的问题是,我需要将JDK7更改为JDK8的地方是哪些?
到目前为止,我在master上所做的步骤是:
- 使用yum安装JDK8
- 使用
sudo alternatives --config java
并将preferred java更改为java-8 export JAVA_HOME=/usr/lib/jvm/openjdk-8
我必须对所有节点都这样做吗?我还需要更改hadoop在ephemeral-hdfs/conf/hadoop-env.sh
中使用的java路径吗?或者我还错过了其他地方吗?
不幸的是,亚马逊还没有提供开箱即用的Java 8安装:请参阅可用版本。
你看过这篇关于如何在运行的实例上安装它的帖子吗?
以下是我对所有java安装所做的操作,这些安装与默认安装提供的版本不同:-
- 在每台机器/节点上配置JAVA_HOME环境变量:-
导出JAVA_HOME=/HOME/ec2用户/软件/jdk1.7.0_25
- 修改默认的PATH,并将"java/bin"目录放在所有节点/机器上PATH的其余部分之前。
导出路径=/home/ec2 user/softwares/jdk1.7.0_25/bin/:$M2:$SCALA_home/bin/:$HIVE_home/bin/:$PATH:
上述操作需要使用相同的"操作系统用户"来完成,该用户用于执行/拥有spark master/worker进程。