Spark job server原理初探

Spark job server是一个基于Spark的服务系统,提供了管理SparkJob,context,jar的RestFul接口。

专注标注原文链接 http://www.cnblogs.com/shenh062326/p/6193375.html

使用说明

参考 http://debugo.com/spark-jobserver/

原理介绍

服务端JobServer首先启动,它会启动一个名叫WebApi的HttpService服务,它提供下面这几个Routes

val myRoutes = cors {
  binaryRoutes ~ jarRoutes ~ contextRoutes ~ jobRoutes ~
  dataRoutes ~ healthzRoutes ~ otherRoutes
}

可以看到,spark job server支持二进制,jar,context,job,data,health,和其他这几类服务。用户发送http请求到服务端后,WebApi会调用相应的routes。这里我将介绍两个最主要的Routes,分别是contextRoutes和jobRoutes。

contextRoutes

在contextRoutes的处理增加context(一个context对应一个SparkContext)逻辑中,会发送AddContext消息给LocalContextSupervisorActor(看起来当前只支持spark client模式), LocalContextSupervisorActor首先会判断contextName是否已经存在,如果存在则抛异常。否则创建context。(支持多个sparkcontext,代码中设置了spark.driver.allowMultipleContexts=true, 虽然spark不禁止使用多个sparkcontext,但可能会出问题,因为spark源码中很多地方的假定都是基于sparkcontext,比如共享内存,thread local变量,许多全局的标识。SPARK-2243例子中出现的情况是一个spark job结束后另外一个spark streaming job也失败)。多个SparkContext会以存在HashMap中。

另外contextRoutes还提供了删除和更新(先删除后增加)context的功能。

jobRoutes

jobRoutes最主要的功能是提交 job,如果提交job时指定了context,spark job server会把job运行在相应的context中;通过没有指定,spark job server则会启动一个临时的context运行job。spark job server运行job时会调用用户代码中的validate方法验证输入,然后调用用户代码中的runjob执行作业的逻辑,同时把context传递给用户代码。

jobRoutes还提供了查询job信息,kill job等功能。

Spark Job Server的优缺点总结
优点:
提供了restful接口;能管理job,context,jar等功能;方便用户重用context,cache的数据。

缺陷

1 用户编写程序需要基于spark job server提供的接口,参考LongPiJob,继承于api.SparkJob。缺点:用户既要操作spark原生的接口,又要继承spark job server的SparkJob接口。

2 一个JVM启动多个SparkContext,可能会出问题。现在spark job Server的做法是忽略这种问题。

3 同一个jvm内启动多个sparkcontext,即使不出错,也可能会出现多个sparkcontext相互影响,如内存,网络(boardCast,getMapOutStatus,collect等)磁盘。需要提供类似接入层的逻辑,启动多个机器运行sparkContext。

虽然存在一些问题,但spark job server向人们提供了一种操作spark context和job的方式,值得我们在构建spark应用平台时借鉴。

时间: 2024-10-08 11:38:28

Spark job server原理初探的相关文章

Spark基本工作原理与RDD

Spark基本工作原理 1.分布式 2.主要基于内存(少数情况基于磁盘) 3.迭代式计算 RDD以及其特点 1.RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集. 2.RDD在抽象上来说是一种元素集合,包含了数据.它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作.(分布式数据集) 3.RDD通常通过Hadoop上的文件,即HDFS文件或者Hive表,来进行创建:有时也可以通过应

dumpsys工作原理初探

dumpsys用来dump某系统组件的信息: *./frameworks/av/native/cmds/dumpsys/dumpsys.cpp* ```     sp<IServiceManager> sm = defaultServiceManager(); //...     for (size_t i=0; i<N; i++) {         sp<IBinder> service = sm->checkService(services[i]);       

[大数据性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析

本課主題 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质是什么,以及 Spark 在性能调优部份的要点,这两点让直式进入性能调优都是一个至关重要的问题,它的本质限制了我们调优到底要达到一个什么样的目标或者说我们是从什么本源上进行调优.希望这篇文章能为读者带出以下的启发: 了解大数据性能调优的本质 了解 Spark 性能调优要点分析 了解 Spark 在资

Python源码剖析笔记3-Python执行原理初探

Python源码剖析笔记3-Python执行原理初探 本文简书地址:http://www.jianshu.com/p/03af86845c95 之前写了几篇源码剖析笔记,然而慢慢觉得没有从一个宏观的角度理解python执行原理的话,从底向上分析未免太容易让人疑惑,不如先从宏观上对python执行原理有了一个基本了解,再慢慢探究细节,这样也许会好很多.这也是最近这么久没有更新了笔记了,一直在看源码剖析书籍和源码,希望能够从一个宏观层面理清python执行原理.人说读书从薄读厚,再从厚读薄方是理解了

Spark history Server配置实用

Spark history Server产生背景 以standalone运行模式为例,在运行Spark Application的时候,Spark会提供一个WEBUI列出应用程序的运行时信息:但该WEBUI随着Application的完成(成功/失败)而关闭,也就是说,Spark Application运行完(成功/失败)后,将无法查看Application的历史记录: Spark history Server就是为了应对这种情况而产生的,通过配置可以在Application执行的过程中记录下了日

C#之CLR内存原理初探

C#之CLR内存原理初探 投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-08-04我要评论 这篇文章主要介绍了C#之CLR内存原理初探,有助于读者进一步理解C#的运行原理,需要的朋友可以参考下 本文初步讲述了C#的CLR内存原理.这里所关注的内存里面说没有寄存器的,所以我们关注的只有托管堆(heap),栈(stack), 字符串常量池(其中string是一个很特殊的对象) 首先我们看两个方法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 vo

Spark学习笔记-使用Spark History Server

在运行Spark应用程序的时候,driver会提供一个webUI给出应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口,也就是 说,Spark应用程序运行完后,将无法查看应用程序的历史记录.Spark history server就是为了应对这种情况而产生的,通过配置,Spark应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而Spark history server可以将这些运行信息装载并以web的方式供用户浏览. 要使用history server,对于提交应用

MXNet之ps-lite及parameter server原理

MXNet之ps-lite及parameter server原理 ps-lite框架是DMLC组自行实现的parameter server通信框架,是DMLC其他项目的核心,例如其深度学习框架MXNET的分布式训练就依赖ps-lite的实现. parameter server原理 在机器学习和深度学习领域,分布式的优化已经成了一种先决条件,因为单机已经解决不了目前快速增长的数据与参数带来的问题.现实中,训练数据的数量可能达到1TB到1PB之间,而训练过程中的参数可能会达到\(10^9\)到\(1

Spark History Server配置使用

1.Spark History Server的作用 在运行Spark应用程序的时候,driver会提供一个webUI用于展现应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口.也就是说,这个服务是伴随Spark应用程序的运行周期的,也就是当应用程序运行完成后,将无法查看应用程序的历史记录.Spark History Server就是为了应对这种情况而产生的,通过配置,Spark应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而Spark history server