目次
特性
安装并启动jobServer
测试job执行
预先启动Context
配置文件

Spark as a Service之JobServer初测

Jun 07, 2016 pm 04:39 PM
service spa spark

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执行

这里我们直接使用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的功能。

^^

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravel 開発: Laravel Sanctum を使用して SPA および API 認証を実装するにはどうすればよいですか? Laravel 開発: Laravel Sanctum を使用して SPA および API 認証を実装するにはどうすればよいですか? Jun 13, 2023 pm 12:36 PM

LaravelSanctum は、Laravel アプリケーションに API 認証と SPA (Single Page Application) 認証を簡単に実装できる軽量の認証パッケージです。この記事では、LaravelSanctum を使用して SPA および API 認証を実装する方法を説明します。まず、SPA 認証と API 認証とは何かを見てみましょう。 SPA 認証は、ページ全体をリロードするのではなく、AJAX を使用して Web サーバーからの情報を要求する単一ページ アプリケーションを指します。

Python と React を使用した SPA サンプルの構築 Python と React を使用した SPA サンプルの構築 Jun 17, 2023 pm 12:38 PM

インターネット技術の継続的な発展に伴い、ますます多くの Web サイトが SPA (SinglePageApplication) アーキテクチャを採用し始めています。 SPA とは、従来の複数ページ方式を使用するのではなく、コンテンツのすべてまたはほとんどを 1 ページで表示し、クライアントを通じてページ コンテンツを動的に更新することを指します。この記事では、Python と React を使用して簡単な SPA サンプルを構築し、SPA の基本的な考え方と実装方法を示します。 1. 環境設定 ビルドを開始する前に、

AI アルゴリズムによく使用される 10 個のライブラリ Java バージョン AI アルゴリズムによく使用される 10 個のライブラリ Java バージョン Jun 13, 2023 pm 04:33 PM

ChatGPTは今年半年以上流行っていますが、その人気はまったく衰えていません。ディープラーニングと NLP も再び注目を集めています。社内の何人かの友人が、Java 開発者である私に、どうやって人工知能を始めたらよいか尋ねてきたのですが、AI を学習するための隠された Java ライブラリを取り出して、皆さんに紹介する時期が来たのです。これらのライブラリとフレームワークは、機械学習、深層学習、自然言語処理などのための幅広いツールとアルゴリズムを提供します。 AI プロジェクトの具体的なニーズに応じて、最適なライブラリまたはフレームワークを選択し、さまざまなアルゴリズムの実験を開始して AI ソリューションを構築できます。 1.Deeplearning4j Java および Scala 用のオープンソースの分散ディープラーニング ライブラリです。ディープラーニング

Go 言語で Spark を使用して効率的なデータ処理を実現する Go 言語で Spark を使用して効率的なデータ処理を実現する Jun 16, 2023 am 08:30 AM

ビッグデータ時代の到来により、データ処理の重要性はますます高まっています。さまざまなデータ処理タスクのために、さまざまなテクノロジーが登場しています。中でもSparkは大規模なデータ処理に適した技術として、さまざまな分野で広く活用されています。また、効率的なプログラミング言語としてGo言語も近年ますます注目を集めています。この記事では、Go 言語で Spark を使用して効率的なデータ処理を実現する方法を説明します。まず、Spark の基本的な概念と原則をいくつか紹介します。

ビッグデータの分野での Java の応用を探る: Hadoop、Spark、Kafka、その他のテクノロジー スタックについて理解する ビッグデータの分野での Java の応用を探る: Hadoop、Spark、Kafka、その他のテクノロジー スタックについて理解する Dec 26, 2023 pm 02:57 PM

Java ビッグ データ テクノロジ スタック: Hadoop、Spark、Kafka などのビッグ データ分野における Java のアプリケーションを理解します。データ量が増加し続けるにつれて、今日のインターネット時代ではビッグ データ テクノロジが注目のトピックになっています。ビッグデータの分野では、Hadoop、Spark、Kafka などのテクノロジーの名前をよく耳にします。これらのテクノロジーは重要な役割を果たしており、広く使用されているプログラミング言語である Java もビッグデータの分野で大きな役割を果たしています。この記事では、Java のアプリケーション全般に​​焦点を当てます。

Django と Vue.js で構築された SPA の例 Django と Vue.js で構築された SPA の例 Jun 18, 2023 pm 07:27 PM

近年、SPA (SinglePageApplication) は Web 開発の人気モデルとなっています。従来のマルチページ アプリケーションと比較して、SPA は高速かつスムーズであり、開発者にとっても使いやすく便利です。この記事では、Django と Vue.js に基づいて構築された SPA の例を共有し、参考とインスピレーションを提供したいと考えています。 Django は、強力なバックエンド開発機能を備えたよく知られた Python Web フレームワークです。 Vue.js のルール

Linuxサービスがシステム環境変数を使用できない問題の解決方法 Linuxサービスがシステム環境変数を使用できない問題の解決方法 May 16, 2023 pm 07:28 PM

Linuxservice はシステム環境変数を使用できません 詳細説明: 以前に MySQL マルチインスタンス インストールを実行したとき、インストールは成功し、Linux は正常に起動できましたが、support-files/mysqld_multi.server は /etc/init.d に移動されました。 / ディレクトリに移動し、ブートに設定します。起動 (chkconfigxxxon) に失敗しました。問題調査により問題が見つかり、解決を開始しました。servicexxxstart では mysql の複数のインスタンスを起動できませんでしたが、mysqld_multistart は使用できることがわかりました。その後、さまざまな試行の後、解決されました。 /etc/profile 設定が通常の環境で出力できることがわかりました。

PHP 入門: PHP と Spark PHP 入門: PHP と Spark May 20, 2023 am 08:41 AM

PHP は、学習が容易で、オープンソースで、クロスプラットフォームであるため、非常に人気のあるサーバーサイド プログラミング言語です。現在、多くの大企業は PHP 言語を使用して Facebook や WordPress などのアプリケーションを構築しています。 Spark は、Web アプリケーションを構築するための高速かつ軽量の開発フレームワークです。これは Java 仮想マシン (JVM) に基づいており、PHP と連携します。この記事では、PHP と Spark を使用して Web アプリケーションを構築する方法を紹介します。 PHPとは何ですか? PH

See all articles