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初测, 感谢原作者分享。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

LaravelSanctum ist ein leichtes Authentifizierungspaket, mit dem Sie die API-Authentifizierung und SPA-Authentifizierung (Single Page Application) einfach in Laravel-Anwendungen implementieren können. In diesem Artikel erfahren Sie, wie Sie mit LaravelSanctum die SPA- und API-Authentifizierung implementieren. Schauen wir uns zunächst an, was SPA- und API-Authentifizierung ist. SPA-Authentifizierung bezieht sich auf eine Einzelseitenanwendung, die nicht die gesamte Seite neu lädt, sondern AJAX verwendet, um Informationen vom Webserver anzufordern

Mit der kontinuierlichen Weiterentwicklung der Internettechnologie beginnen immer mehr Websites, die SPA-Architektur (SinglePageApplication) zu übernehmen. SPA bezieht sich auf die Darstellung des gesamten oder eines Großteils des Inhalts auf einer Seite und die dynamische Aktualisierung des Seiteninhalts über den Client, anstatt die herkömmliche Mehrseitenmethode zu verwenden. In diesem Artikel erstellen wir mithilfe von Python und React ein einfaches SPA-Beispiel, um die Grundidee und Implementierungsmethode von SPA zu demonstrieren. 1. Umgebungseinrichtung Bevor wir mit dem Bau beginnen, haben wir

ChatGPT ist dieses Jahr seit mehr als einem halben Jahr beliebt und seine Popularität ist überhaupt nicht zurückgegangen. Auch Deep Learning und NLP sind wieder in aller Munde. Einige Freunde im Unternehmen fragen mich als Java-Entwickler, wie ich mit künstlicher Intelligenz beginnen kann. Es ist an der Zeit, die versteckte Java-Bibliothek zum Erlernen von KI herauszuholen und sie allen vorzustellen. Diese Bibliotheken und Frameworks bieten eine breite Palette von Tools und Algorithmen für maschinelles Lernen, Deep Learning, Verarbeitung natürlicher Sprache und mehr. Abhängig von den spezifischen Anforderungen Ihres KI-Projekts können Sie die am besten geeignete Bibliothek oder das am besten geeignete Framework auswählen und mit verschiedenen Algorithmen experimentieren, um Ihre KI-Lösung zu erstellen. 1.Deeplearning4j Es handelt sich um eine verteilte Open-Source-Deep-Learning-Bibliothek für Java und Scala. Deeplearning

Mit dem Aufkommen des Big-Data-Zeitalters hat die Datenverarbeitung immer mehr an Bedeutung gewonnen. Für verschiedene Datenverarbeitungsaufgaben haben sich unterschiedliche Technologien herausgebildet. Unter ihnen ist Spark als Technologie, die für die Datenverarbeitung in großem Maßstab geeignet ist, in verschiedenen Bereichen weit verbreitet. Darüber hinaus hat die Go-Sprache als effiziente Programmiersprache in den letzten Jahren immer mehr Aufmerksamkeit erhalten. In diesem Artikel untersuchen wir, wie man Spark in der Go-Sprache verwendet, um eine effiziente Datenverarbeitung zu erreichen. Wir werden zunächst einige grundlegende Konzepte und Prinzipien von Spark vorstellen

Java-Big-Data-Technologie-Stack: Verstehen Sie die Anwendung von Java im Bereich Big Data wie Hadoop, Spark, Kafka usw. Da die Datenmenge weiter zunimmt, ist die Big-Data-Technologie im heutigen Internetzeitalter zu einem heißen Thema geworden. Im Bereich Big Data hören wir oft die Namen Hadoop, Spark, Kafka und andere Technologien. Diese Technologien spielen eine entscheidende Rolle, und Java spielt als weit verbreitete Programmiersprache auch im Bereich Big Data eine große Rolle. Dieser Artikel konzentriert sich auf die Anwendung von Java im Großen und Ganzen

In den letzten Jahren hat sich SPA (SinglePageApplication) zu einem beliebten Modell für die Webentwicklung entwickelt. Im Vergleich zu herkömmlichen mehrseitigen Anwendungen ist SPA schneller und reibungsloser und außerdem benutzerfreundlicher und bequemer für Entwickler. In diesem Artikel wird ein auf Django und Vue.js basierendes SPA-Beispiel vorgestellt, in der Hoffnung, Ihnen einige Referenzen und Inspirationen zu liefern. Django ist ein bekanntes Python-Webframework mit leistungsstarken Back-End-Entwicklungsfunktionen. Vue.js-Regeln

Linuxservice kann keine Systemumgebungsvariablen verwenden: Bei einer vorherigen MySQL-Installation mit mehreren Instanzen war die Installation erfolgreich und Linux konnte erfolgreich gestartet werden. support-files/mysqld_multi.server wurde jedoch nach /etc/init.d verschoben /-Verzeichnis und Startup (chkconfigxxxon) fehlgeschlagen; die Problemerkundung hat begonnen, mehrere Instanzen von mysql zu starten, aber nach mehreren Versuchen konnte es verwendet werden stellte fest, dass die /etc/profile-Einstellungen in einer normalen Umgebung ausgedruckt werden konnten

PHP ist eine sehr beliebte serverseitige Programmiersprache, da sie leicht zu erlernen, Open Source und plattformübergreifend ist. Derzeit verwenden viele große Unternehmen die PHP-Sprache, um Anwendungen zu erstellen, beispielsweise Facebook und WordPress. Spark ist ein schnelles und leichtes Entwicklungsframework zum Erstellen von Webanwendungen. Es basiert auf der Java Virtual Machine (JVM) und arbeitet mit PHP. In diesem Artikel wird erläutert, wie Sie Webanwendungen mit PHP und Spark erstellen. Was ist PHP? PH
