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应用平台时借鉴。
Spark job server原理初探的更多相关文章
- 【转】Spark History Server 架构原理介绍
[From]https://blog.csdn.net/u013332124/article/details/88350345 Spark History Server 是spark内置的一个http ...
- Spark History Server配置使用
Spark history Server产生背景 以standalone运行模式为例,在运行Spark Application的时候,Spark会提供一个WEBUI列出应用程序的运行时信息:但该WEB ...
- Spark学习笔记-使用Spark History Server
在运行Spark应用程序的时候,driver会提供一个webUI给出应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口,也就是 说,Spark应用程序运行完后,将无法查看应用程序的历史记 ...
- 4.Apache Spark的工作原理
Apache Spark的工作原理 1 Why Apache Spark 2 关于Apache Spark 3 如何安装Apache Spark 4 Apache Spark的工作原理 5 spark ...
- MXNet之ps-lite及parameter server原理
MXNet之ps-lite及parameter server原理 ps-lite框架是DMLC组自行实现的parameter server通信框架,是DMLC其他项目的核心,例如其深度学习框架MXNE ...
- Python源代码剖析笔记3-Python运行原理初探
Python源代码剖析笔记3-Python执行原理初探 本文简书地址:http://www.jianshu.com/p/03af86845c95 之前写了几篇源代码剖析笔记,然而慢慢觉得没有从一个宏观 ...
- [Spark性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析
本課主題 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质 ...
- Spark生态以及原理
spark 生态及运行原理 Spark 特点 运行速度快 => Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算.官方提供的数据表明,如果数据由磁盘读取,速度是Hadoop MapR ...
- Spark Scheduler内部原理剖析
文章正文 通过文章“Spark 核心概念RDD”我们知道,Spark的核心是根据RDD来实现的,Spark Scheduler则为Spark核心实现的重要一环,其作用就是任务调度.Spark的任务调度 ...
随机推荐
- 【转载】Picasso下载器
Github源码地址:https://github.com/JakeWharton/picasso2-okhttp3-downloader 使用方法: Gradle: compile 'com.jak ...
- 洛谷P2286 [HNOI2004]宠物收养所 [STL,平衡树]
题目传送门 宠物收养所 题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的 ...
- Vue 2.0学习(七)方法与事件
基本用法 以监听一个按钮的点击事件为例,设计一个计数器,每次点击都加1: <div id = "app"> 点击次数:{{ counter }} <button ...
- 动态规划:部分和问题和数字和为sum的方法数
很久之前看过这个题目,但是没有仔细整理,直到现在看基础才想到这两个题.这两个题非常经典也非常类似.接下来分别介绍. 部分和问题 题目描述 给定整数a1.a2........an,判断是否可以从中选出若 ...
- 51nod1218 最长递增子序列 V2
看见标签推荐顺便就做了吧 记$f[i], g[i]$为$i$的含$i$的前缀最长递增子序列和后缀递增子序列 只要满足$f[i] + g[i] == LIS + 1$,那么$i$就是可能的 对于$i$而 ...
- bzoj 2038 小z的袜子 莫队例题
莫队,利用可以快速地通过一个问题的答案得到另一问题的答案这一特性,合理地组织问题的求解顺序,将已解决的问题帮助解决当前问题,来优化时间复杂度. 典型用法:处理静态(无修改)离线区间查询问题. 线段树也 ...
- Unity 的一些特性
using System; using UnityEngine; using UnityEditor; using UnityEngine.Serialization; using Random = ...
- 一步一步创建JAVA线程
(一)创建线程 要想明白线程机制,我们先从一些基本内容的概念下手. 线程和进程是两个完全不同的概念,进程是运行在自己的地址空间内的自包容的程序,而线程是在进程中的一个单一的顺序控制流,因此,单个进程可 ...
- 慢查询日志分析工具之pt-query-digest
简介 pt-query-digest 是用于分析mysql慢查询的一个工具,与mysqldumpshow工具相比,py-query_digest 工具的分析结果更具体,更完善. 有时因为 ...
- MYSQL学习笔记 (一)
每次面试后,都决定一改前非.事实上依然和那些发誓再吃最后一份美食的胖子一样.不管这次是不是三分钟热度但是至少我开始. MYSQL引擎 说到MYSQL引擎我又想起研二时候去面试的第一家公司 ...