Spark as a Service之JobServer初测
spark-jobserver提供了一个用于提交和管理Apache Spark作业(job)、jar文件和作业上下文(SparkContext)的RESTful接口。该项目位于git(https://github.com/ooyala/spark-jobserver),当前为0.4版本。 特性 Spark as a Service: 简单的面向job和context管理
spark-jobserver提供了一个用于提交和管理Apache Spark作业(job)、jar文件和作业上下文(SparkContext)的RESTful接口。该项目位于git(https://github.com/ooyala/spark-jobserver),当前为0.4版本。
特性
“Spark as a Service”: 简单的面向job和context管理的REST接口
通过长期运行的job context支持亚秒级低延时作业(job)
可以通过结束context来停止运行的作业(job)
分割jar上传步骤以提高job的启动
异步和同步的job API,其中同步API对低延时作业非常有效
支持Standalone Spark和Mesos
Job和jar信息通过一个可插拔的DAO接口来持久化
命名RDD以缓存,并可以通过该名称获取RDD。这样可以提高作业间RDD的共享和重用
安装并启动jobServer
jobServer依赖sbt,所以必须先装好sbt。
rpm -ivh https://dl.bintray.com/sbt/rpm/sbt-0.13.6.rpm yum install git # 下面clone这个项目 SHELL$ git clone https://github.com/ooyala/spark-jobserver.git # 在项目根目录下,进入sbt SHELL$ sbt ...... [info] Set current project to spark-jobserver-master (in build file:/D:/Projects /spark-jobserver-master/) > #在本地启动jobServer(开发者模式) >re-start --- -Xmx4g ...... #此时会下载spark-core,jetty和liftweb等相关模块。 job-server Starting spark.jobserver.JobServer.main() [success] Total time: 545 s, completed 2014-10-21 19:19:48
然后访问http://localhost:8090 可以看到Web UI
?
测试job执行
这里我们直接使用job-server的test包进行测试
SHELL$ sbt job-server-tests/package ...... [info] Compiling 5 Scala sources to /root/spark-jobserver/job-server-tests/target/classes... [info] Packaging /root/spark-jobserver/job-server-tests/target/job-server-tests-0.4.0.jar ... [info] Done packaging.
编译完成后,将打包的jar文件通过REST接口上传
REST接口的API如下:
GET /jobs
查询所有job
POST /jobs
提交一个新job
GET /jobs/<jobid></jobid>
查询某一任务的结果和状态
GET /jobs/<jobid>/config</jobid>
SHELL$ curl --data-binary @job-server-tests/target/job-server-tests-0.4.0.jar localhost:8090/jars/test OK # 查看提交的jar SHELL$ curl localhost:8090/jars/ { "test": "2014-10-22T15:15:04.826+08:00" } # 提交job 提交的appName为test,class为spark.jobserver.WordCountExample SHELL$ curl -d "input.string = hello job server" 'localhost:8090/jobs?appName=test&classPath=spark.jobserver.WordCountExample' { "status": "STARTED", "result": { "jobId": "34ce0666-0148-46f7-8bcf-a7a19b5608b2", "context": "eba36388-spark.jobserver.WordCountExample" } } # 通过job-id查看结果和配置信息 SHELL$ curl localhost:8090/jobs/34ce0666-0148-46f7-8bcf-a7a19b5608b2 { "status": "OK", "result": { "job": 1, "hello": 1, "server": 1 } SHELL$ curl localhost:8090/jobs/34ce0666-0148-46f7-8bcf-a7a19b5608b2/config { "input" : { "string" : "hello job server" } # 提交一个同步的job,当执行命令后,terminal会hang住直到任务执行完毕。 SHELL$ curl -d "input.string = hello job server" 'localhost:8090/jobs?appName=test&classPath=spark.jobserver.WordCountExample'&sync=true { "status": "OK", "result": { "job": 1, "hello": 1, "server": 1 }
在Web UI上也可以看到Completed Jobs相应的信息。
预先启动Context
和Context相关的API
GET /contexts
?查询所有预先建立好的context
POST /contexts
?建立新的context
DELETE ?/contexts/<name></name>
?删除此context,停止运行于此context上的所有job
SHELL$ curl -d "" 'localhost:8090/contexts/test-context?num-cpu-cores=4&mem-per-node=512m' OK # 查看现有的context curl localhost:8090/contexts ["test-context", "feceedc3-spark.jobserver.WordCountExample"] 接下来在这个context上执行job curl -d "input.string = a b c a b see" 'localhost:8090/jobs?appName=test&classPath=spark.jobserver.WordCountExample&context=test-context&sync=true' { "status": "OK", "result": { "a": 2, "b": 2, "c": 1, "see": 1 }
配置文件
打开配置文件,可以发现master设置为local[4],可以将其改为我们的集群地址。
vim spark-jobserver/config/local.conf.template master = "local[4]"
此外,关于数据对象的存储方法和路径:
jobdao = spark.jobserver.io.JobFileDAO filedao { rootdir = /tmp/spark-job-server/filedao/data }
默认context设置,该设置可以被
下面再次在sbt中启动REST接口的中的参数覆盖。
# universal context configuration. These settings can be overridden, see README.md context-settings { num-cpu-cores = 2 # Number of cores to allocate. Required. memory-per-node = 512m # Executor memory per node, -Xmx style eg 512m, #1G, etc. # in case spark distribution should be accessed from HDFS (as opposed to being installed on every mesos slave) # spark.executor.uri = "hdfs://namenode:8020/apps/spark/spark.tgz" # uris of jars to be loaded into the classpath for this context # dependent-jar-uris = ["file:///some/path/present/in/each/mesos/slave/somepackage.jar"] }
基本的使用到此为止,jobServer的部署和项目使用将之后介绍。顺便期待下一个版本SQL Window的功能。
^^
原文地址:Spark as a Service之JobServer初测, 感谢原作者分享。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

LaravelSanctum est un package d'authentification léger qui vous permet d'implémenter facilement l'authentification API et l'authentification SPA (Single Page Application) dans les applications Laravel. Dans cet article, nous explorerons comment utiliser LaravelSanctum pour implémenter l'authentification SPA et API. Tout d’abord, regardons ce que sont l’authentification SPA et API. L'authentification SPA fait référence à une application d'une seule page qui ne recharge pas la page entière mais utilise AJAX pour demander des informations au serveur Web pour

Avec le développement continu de la technologie Internet, de plus en plus de sites Web commencent à adopter l'architecture SPA (SinglePageApplication). SPA fait référence à la présentation de la totalité ou de la majeure partie du contenu sur une seule page et à la mise à jour dynamique du contenu de la page via le client, plutôt que d'utiliser la méthode traditionnelle multi-pages. Dans cet article, nous utiliserons Python et React pour créer un exemple SPA simple afin de démontrer l'idée de base et la méthode de mise en œuvre de SPA. 1. Configuration de l'environnement Avant de commencer à construire, nous

ChatGPT est populaire depuis plus de six mois cette année et sa popularité n'a pas baissé du tout. Le Deep Learning et la PNL sont également revenus sur le devant de la scène. Certains amis de l'entreprise me demandent, en tant que développeur Java, comment démarrer avec l'intelligence artificielle. Il est temps de sortir la bibliothèque Java cachée pour apprendre l'IA et de la présenter à tout le monde. Ces bibliothèques et frameworks fournissent une large gamme d'outils et d'algorithmes pour l'apprentissage automatique, l'apprentissage profond, le traitement du langage naturel, etc. En fonction des besoins spécifiques de votre projet d'IA, vous pouvez choisir la bibliothèque ou le framework le plus approprié et commencer à expérimenter différents algorithmes pour créer votre solution d'IA. 1.Deeplearning4j Il s'agit d'une bibliothèque d'apprentissage en profondeur distribuée open source pour Java et Scala. Apprentissage profond

Ces dernières années, SPA (SinglePageApplication) est devenu un modèle populaire pour le développement Web. Comparé aux applications multipages traditionnelles, SPA est plus rapide et plus fluide, et il est également plus convivial et plus pratique pour les développeurs. Cet article partagera un exemple SPA construit sur la base de Django et Vue.js, dans l'espoir de vous fournir des références et de l'inspiration. Django est un framework Web Python bien connu doté de puissantes capacités de développement back-end. Règles Vue.js

Avec l’avènement de l’ère du Big Data, le traitement des données est devenu de plus en plus important. Pour diverses tâches de traitement de données, différentes technologies ont vu le jour. Parmi eux, Spark, en tant que technologie adaptée au traitement de données à grande échelle, a été largement utilisée dans divers domaines. De plus, le langage Go, en tant que langage de programmation efficace, a également reçu de plus en plus d’attention ces dernières années. Dans cet article, nous explorerons comment utiliser le langage Spark in Go pour obtenir un traitement efficace des données. Nous présenterons d'abord quelques concepts et principes de base de Spark

Pile technologique Java Big Data : Comprendre l'application de Java dans le domaine du Big Data, comme Hadoop, Spark, Kafka, etc. Alors que la quantité de données continue d'augmenter, la technologie Big Data est devenue un sujet brûlant à l'ère d'Internet d'aujourd'hui. Dans le domaine du big data, on entend souvent les noms de Hadoop, Spark, Kafka et d’autres technologies. Ces technologies jouent un rôle essentiel et Java, en tant que langage de programmation largement utilisé, joue également un rôle majeur dans le domaine du Big Data. Cet article se concentrera sur l'application de Java en général

Le service Linux ne peut pas utiliser les variables d'environnement système. Description détaillée : lors d'une installation multi-instance MySQL auparavant, l'installation a réussi et Linux a pu être démarré avec succès, cependant, support-files/mysqld_multi.server a été déplacé vers /etc/init.d ; / et configuré pour démarrer. Le démarrage (chkconfigxxxon) a échoué ; l'exploration du problème a trouvé le problème et a commencé à le résoudre. Il a été constaté que servicexxxstart ne pouvait pas démarrer plusieurs instances de mysql, mais mysqld_multistart a pu être utilisé après plusieurs tentatives ; a constaté que le paramètre /etc/profile pouvait être imprimé dans un environnement normal m

PHP est un langage de programmation côté serveur très populaire car il est facile à apprendre, open source et multiplateforme. Actuellement, de nombreuses grandes entreprises utilisent le langage PHP pour créer des applications, telles que Facebook et WordPress. Spark est un framework de développement rapide et léger pour créer des applications Web. Il est basé sur Java Virtual Machine (JVM) et fonctionne avec PHP. Cet article explique comment créer des applications Web à l'aide de PHP et Spark. Qu’est-ce que PHP ? PH
