zoukankan      html  css  js  c++  java
  • 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应用平台时借鉴。

  • 相关阅读:
    日志
    设置和开启定时器
    缓存管理
    计算机程序员能做多久,这个行业有年龄限制吗?
    程序员都是怎么工作的?
    做程序员怎么样?
    javascript中this关键字
    1003. 二哥养细菌—java
    1002. 二哥种花生——java
    this与static
  • 原文地址:https://www.cnblogs.com/shenh062326/p/6193375.html
Copyright © 2011-2022 走看看