Comment exécuter un programme java sur le cluster Apache Spark?


J'ai suivi "Une Application Autonome en Java" partie du tutoriel https://spark.apache.org/docs/0.8.1/quick-start.html

Cette partie a fonctionné comme prévu

$ mvn package
$ mvn exec:java -Dexec.mainClass="SimpleApp"
...
Lines with a: 46, Lines with b: 23

Comment puis-je exécuter la même classe sur le cluster en parallèle ? Si je peux passer cette étape, j'utiliserai les données HDFS comme entrée. Est-il possible d'exécuter cette SimpleApp.java avec des paramètres comme celui-ci:

./run-example <class> <params>
Author: proofmoore, 2014-04-10

2 answers

Je vous suggère d'écrire une classe Java ou Scala simple dans votreE. Créez des objets SparkConf et SparkContext dans votre " SimpleApp.Java".

SparkConf conf = new SparkConf().setAppName(appName).setMaster("local[2]");
JavaSparkContext sc = new JavaSparkContext(conf);

Une fois que vous exécutez maven clean package ou maven package, il créera un fichier jar dans le dossier cible de votre projet. Si ce n'est pas le cas, créez un fichier JAR à l'aide de la commande suivante. Vous pouvez trouver le SimpleApp.fichier de classe dans le dossier "target/classes". cd dans ce répertoire.

jar cfve file.jar SimpleApp.class

Placez ce fichier JAR dans votre projet dans le répertoire cible. Ce POT le fichier contient la dépendance de votre classe SimpleApp lors de la soumission de votre travail à Spark. Je suppose que vous avez une structure de projet comme ci-dessous.

simpleapp
 - src/main/java
  - org.apache.spark.examples
    -SimpleApp.java
 - lib
  - dependent.jars (you can put all dependent jars inside lib directory)
 - target
  - simpleapp.jar (after compiling your source)

Cd dans votre répertoire spark. J'utilise spark-1.4.0-bin-hadoop2. 6. Votre cmd ressemble à ceci.

spark-1.4.0-bin-hadoop2.6>

Démarrez le maître et le travailleur en utilisant les commandes suivantes.

spark-1.4.0-bin-hadoop2.6> ./sbin/start-all.sh

Si cela ne fonctionne pas, démarrez master et slaves séparément.

spark-1.4.0-bin-hadoop2.6> ./sbin/start-master.sh
spark-1.4.0-bin-hadoop2.6> ./sbin/start-slaves.sh

Soumettez votre programme spark en utilisant Spark Submit. Si vous avez une structure comme J'ai expliqué puis passer cet argument en classe.

--class org.apache.spark.examples.SimpleApp

Autre

--class SimpleApp

Enfin, soumettez votre programme spark via spark submit.

spark-1.4.0-bin-hadoop2.6>./bin/spark-submit --class SimpleApp --master local[2] /PATH-TO-YOUR-PROJECT-DIRECTORY/target/file.jar

Ici, j'ai utilisé locales[2] en tant que maître donc, mon programme sera exécuté sur deux threads, mais vous pouvez passer votre maître URL dans --maître comme --master spark://YOUR-HOSTNAME:7077

Le numéro de port 7077 est un numéro de port par défaut pour l'URL principale.

 2
Author: Brijesh Patel, 2016-03-16 19:16:27

Je ne les exécute pas avec mvn, je construis juste un gros pot, le scp au cluster, puis exécute:

java -cp /path/to/jar.jar com.yourcompany.yourpackage.YourApp some arguments
 0
Author: samthebest, 2014-04-11 10:07:22