Запуск искровых заданий с помощью REST

Я в последнее время пробовал apache spark. Мой вопрос более специфичен для запуска искровых работ. Здесь я разместил вопрос о понимании искровых работ. После того, как я испачкался на работе, я перешел к своему требованию.

У меня есть конечная точка REST, где я предоставляю API для запуска заданий, я использовал Spring4.0 для Rest Rest. Теперь, продолжая, я подумал о реализации Jobs в качестве службы весной, где я буду отправлять Job программно, то есть при запуске конечной точки с заданными параметрами я буду запускать задание. У меня сейчас мало вариантов дизайна.

  • Как и в случае с нижеприведенной письменной работой, мне нужно сохранить несколько заданий, вызываемых абстрактным классом: JobScheduler,

     /*Can this Code be abstracted from the application and written as 
      as a seperate job. Because my understanding is that the 
     Application code itself has to have the addJars embedded 
     which internally  sparkContext takes care.*/
    
     SparkConf sparkConf = new SparkConf().setAppName("MyApp").setJars(
     new String[] { "/path/to/jar/submit/cluster" })
     .setMaster("/url/of/master/node");
      sparkConf.setSparkHome("/path/to/spark/");
    
            sparkConf.set("spark.scheduler.mode", "FAIR");
            JavaSparkContext sc = new JavaSparkContext(sparkConf);
            sc.setLocalProperty("spark.scheduler.pool", "test");
    
        // Application with Algorithm , transformations
    
  • Расширение вышеупомянутого пункта имеет несколько версий заданий, обрабатываемых службой.

  • Или используйте для этого Spark Job Server.

Во-первых, я хотел бы знать, что является лучшим решением в этом случае, с точки зрения исполнения и масштабирования.

Примечание: я использую автономный кластер от искры. любезно помогите.

4 ответа

Решение

Просто используйте Spark JobServer https://github.com/spark-jobserver/spark-jobserver

Есть много вещей, которые нужно учитывать при создании сервиса, и Spark JobServer уже охватил большинство из них. Если вы находите вещи, которые недостаточно хороши, должно быть легко сделать запрос и добавить код в свою систему, а не изобретать его заново

Оказывается, у Spark есть скрытый API REST для отправки задания, проверки статуса и уничтожения.

Проверьте полный пример здесь: http://arturmkrtchyan.com/apache-spark-hidden-rest-api

Livy - это REST-интерфейс с открытым исходным кодом для взаимодействия с Apache Spark из любой точки мира. Он поддерживает выполнение фрагментов кода или программ в контексте Spark, который выполняется локально или в Apache Hadoop YARN.

Вот хороший клиент, который вам может пригодиться: https://github.com/ywilkof/spark-jobs-rest-client

Даже у меня было это требование, я мог сделать это с помощью Livy Server, как упомянул один из участников проекта Хосеми. Ниже приведены шаги, которые я предпринял, надеюсь, это кому-то поможет:

Download livy zip from https://livy.apache.org/download/
Follow instructions:  https://livy.apache.org/get-started/


Upload the zip to a client.
Unzip the file
Check for the following two parameters if doesn't exists, create with right path
export SPARK_HOME=/opt/spark
export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop

Enable 8998 port on the client

Update $LIVY_HOME/conf/livy.conf with master details any other stuff needed
Note: Template are there in $LIVY_HOME/conf
Eg. livy.file.local-dir-whitelist = /home/folder-where-the-jar-will-be-kept/


Run the server
$LIVY_HOME/bin/livy-server start

Stop the server
$LIVY_HOME/bin/livy-server stop

UI: <client-ip>:8998/ui/

Submitting job:POST : http://<your client ip goes here>:8998/batches
{
  "className" :  "<ur class name will come here with package name>",
  "file"  : "your jar location",
  "args" : ["arg1", "arg2", "arg3" ]

}
Другие вопросы по тегам