Я отправляю / запускаю несколько приложений через spark launcher в своем веб-приложении java.Кажется, он отправляет только одно приложение. Вот мой код
Runnable run = new Runnable() {
public void run() {
try {
SparkAppHandle sparkApp = new SparkLauncher()
.setAppResource("C:\\BigData\\spark\\examples\\jars\\spark-examples_2.11-2.4.0.jar")
.setMainClass("org.apache.spark.examples.SparkPi")
.setMaster("spark://192.168.2.233:7077")
.setConf("spark.scheduler.mode", "FAIR")
.setVerbose(true)
.setConf("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.setConf("spark.sql.inMemoryColumnarStorage.batchSize", "10000")
.setConf("spark.sql.codegen","false")
.setConf("spark.submit.deployMode", "client")
.setConf("spark.executor.memory", "1g")
.setConf("spark.driver.memory", "1g")
.setConf("spark.cores.max", "1")
.setConf("spark.executor.cores", "1")
.setConf("spark.executor.instances", "1")
.setConf("spark.driver.host","192.168.2.233")
// .setConf("spark.dynamicAllocation.enabled", "true")
// .setConf("spark.shuffle.service.enabled", "true")
.startApplication();
System.out.println(sparkApp.getState());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
//running two times so as to submit two parallel application
//in the application logic , we would pass different args to different app
new Thread(run).start();
new Thread(run).start();`
У меня есть автономный кластер с одним рабочим узлом 1 (8 ГБ, 4 ядра) и другим рабочим узлом 2 (8 ГБ, 2 ядра).Мастер работает на узле 1, а драйвер также только на узле 1.
Кажется, что даже если приложение запускает второй поток, с ним ничего не происходит, и второе приложение даже не появляется в состоянии ОЖИДАНИЯ, которое было бы понятно,