Изменение JDK в кластере, развернутом с помощью./spark-ec2
Я развернул кластер Amazon EC2 со Spark следующим образом:
~/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, поэтому я получаю Unsupported major.minor version 52.0
У меня вопрос, где мне нужно сменить JDK7 на JDK8?
Шаги, которые я делаю до сих пор на мастере:
- Установите JDK8 с помощью yum
- использование
sudo alternatives --config java
и измените предпочтительную Java на Java-8 export JAVA_HOME=/usr/lib/jvm/openjdk-8
Должен ли я сделать это для всех узлов? Также мне нужно изменить путь Java, который использует hadoop в ephemeral-hdfs/conf/hadoop-env.sh
или есть другие места, которые я пропустил?
2 ответа
К сожалению, Amazon пока не предлагает готовых установок Java 8: посмотрите доступные версии.
Вы видели этот пост о том, как установить его на работающие экземпляры?
Вот что я делал для всех установок Java, которые отличаются от версий, предоставляемых установками по умолчанию:
- Сконфигурируйте переменную среды JAVA_HOME на каждом компьютере / узле: -
export JAVA_HOME = / home / ec2-user / softwares / jdk1.7.0_25
- Измените путь по умолчанию и поместите каталог "java/bin" перед остальной частью пути на все узлы / машины.
экспорт PATH=/home/ec2-user/softwares/jdk1.7.0_25/bin/:$M2:$SCALA_HOME/bin/:$HIVE_HOME/bin/:$PATH:
И вышеупомянутое должно быть сделано с тем же "пользователем ОС", который используется, чтобы выполнить / владеть процессом master master / worker.