мой пользовательский случай : мы запускаем кластер Spark на Mesos, так как наш кластер Mesos также содержит другие платформы, такие как Storm, Cassandra, у нас были случаи, когда работа Spark чрезмерно загружала процессор, что вызывало конфликт ресурсов сдругие фреймворки.
target : запустить немодульное приложение spark (jar скомпилировано с Java-совместимым компилятором sbt) в Java 10, чтобы использовать поддержку контейнера Java 10.Ссылка по теме: https://bugs.openjdk.java.net/browse/JDK-8146115
После прочтения некоторых чтений о Java 9 это мой воображаемый happy-path :
- Точка
JAVA_HOME
в Java 10, - Запустите мое искровое задание, разрешите
ClassNotFoundException
, найдите, например, недостающие модули в документации Oracle (модуль java.sql https://docs.oracle.com/javase/9/docs/api/java.sql-summary.html) отсутствует, добавьте «spark.executor.extraJavaOptions -add-modules java.se.ee ”-> conf / spark-defaults.conf - Повторяйте шаг 2, пока не будет выброшено больше исключений
однако я нашел это,
Предупреждение: локальный jar *** / java.se.ee не существует, пропуская.
java.lang.ClassNotFoundException: com.**.spark.Main at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:374)
at org.apache.spark.util.Utils$.classForName(Utils.scala:233)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:732)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Это то, что я наблюдал после перехода в режим подробного ввода
...
Использование файла свойств: /tmp/spark-2.2.2-bin-hadoop2.6/conf/spark-defaults.conf
Добавление свойства по умолчанию: spark.eventLog.enabled = true Добавление свойства по умолчанию: spark.eventLog.dir = hdfs: // *** Добавление свойства по умолчанию: spark.executor.extraJavaOptions = - add-modules java.se.ee
ParsАргументы ed:
master mesos://localhost:10017
deployMode cluster
executorMemory 16G
executorCores 2
totalExecutorCores 50
propertiesFile /tmp/spark-2.2.2-bin-hadoop2.6/conf/spark-
defaults.conf
driverMemory 4G
driverCores 1
driverExtraClassPath null
driverExtraLibraryPath null
driverExtraJavaOptions null
supervise false
queue null
numExecutors null
files null
pyFiles null
archives null
mainClass com.**.spark.Main
primaryResource ***.jar
name ***
childArgs [***]
jars null
packages null
packagesExclusions null
repositories null
verbose true
Spark properties used, including those specified through
--conf and those from the properties file /tmp/spark-2.2.2-bin-hadoop2.6/conf/spark-defaults.conf:
(spark.mesos.uris,hdfs:///***/tmpqIx6x2)
(spark.driver.memory,4G)
(spark.eventLog.enabled,true)
(spark.executor.extraJavaOptions,--add-modules java.se.ee)
(spark.executor.uri,***/spark-2.2.2-bin-hadoop2.6.tgz)
(spark.eventLog.dir,hdfs://***)
Здесь было напечатано предупреждение:
https://github.com/apache/spark/blob/5264164a67df498b73facae207eda12ee133be7d/core/src/main/scala/org/apache/spark/deploy/worker/DriverWrapper.scala#L101
https://github.com/apache/spark/blob/5264164a67df498b73facae207eda12ee133be7d/core/src/main/scala/org/apache/spark/deploy/DependencyUtils.scala#L76
После прочтения исходного кода.Мне кажется, что spark-submit не понимает опцию --add-modules, поэтому он рассматривает java.se.ee как файл jar, а не как модуль.И я не могу сделать так, как я хочу, чтобы он переводил --add-modules при запуске JVM исполнителя.
Кто-нибудь проводил подобные эксперименты с Spark на Java 9/10?
Заранее спасибо