前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spark jobserver源码导读

spark jobserver源码导读

作者头像
Spark学习技巧
发布2019-07-05 17:50:51
8830
发布2019-07-05 17:50:51
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

最近有人问浪尖,想读一个比较大的spark项目源码,问浪尖要,浪尖只能告诉你业务相关的是基本上不会有人开源,平台相关的源码就比较多了,浪尖比较推荐的是Spark JobServer相关的源码。改源码量比较小,而且是关于Spark API的非常适合大家去阅读,以便于帮助大家更加深刻的理解spark API的使用及运行原理相关的内容。

而且作为一个比较好的spark 服务,适合那些想用spark 作为服务的公司,免于自己开发维护一套系统。

至于推荐的原因,可以有spark jobserver的特征窥见一斑:

代码语言:javascript
复制
1.“Spark as Service”:针对job和contexts的各个方面提供了REST风格的api接口进行管理
2. 支持SparkSQL、Hive、StreamingContext/jobs以及定制job contexts!
3. 通过集成 Apache Shiro 来支持 LDAP 权限验证
4. 为了隔离每个sparkcontext单独一个jvm
5. 通过长期运行的job contexts支持亚秒级别低延迟的任务
6. 可以通过结束 context 来停止运行的作业(job)
7. 分割 jar 上传步骤以提高 job 的启动速度
8. 异步和同步的 job API,其中同步 API 对低延时作业非常有效
9. 支持Standalone Spark和Mesos、yarn
10. Job和jar信息通过一个可插拔的DAO接口来持久化
11. 对RDD或DataFrame对象命名并缓存,通过该名称获取RDD或DataFrame。这样可以提高对象在作业间的共享和重用

关于入口浪尖建议大家可以从Spark jobserver的bin目录下手,比如server_start.sh脚本,该脚本本身就是一个spark 任务提交脚本比较好的范例。

代码语言:javascript
复制
#!/usr/bin/env bash
# Script to start the job server
# Extra arguments will be spark-submit options, for example
#  ./server_start.sh --jars cassandra-spark-connector.jar
#
# Environment vars (note settings.sh overrides):
#   JOBSERVER_MEMORY - defaults to 1G, the amount of memory (eg 512m, 2G) to give to job server
#   JOBSERVER_CONFIG - alternate configuration file to use
#   JOBSERVER_FG    - launches job server in foreground; defaults to forking in background
set -e

get_abs_script_path() {
  pushd . >/dev/null
  cd "$(dirname "$0")"
  appdir=$(pwd)
  popd  >/dev/null
}

get_abs_script_path

set -a
. $appdir/setenv.sh
set +a

GC_OPTS_SERVER="$GC_OPTS_BASE -Xloggc:$appdir/$GC_OUT_FILE_NAME"

MAIN="spark.jobserver.JobServer"

PIDFILE=$appdir/spark-jobserver.pid
if [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE"); then
   echo 'Job server is already running'
   exit 1
fi

cmd='$SPARK_HOME/bin/spark-submit --class $MAIN --driver-memory $JOBSERVER_MEMORY
  --conf "spark.executor.extraJavaOptions=$LOGGING_OPTS"
  --driver-java-options "$GC_OPTS_SERVER $JAVA_OPTS_SERVER $LOGGING_OPTS $CONFIG_OVERRIDES"
  $@ $appdir/spark-job-server.jar $conffile'
if [ -z "$JOBSERVER_FG" ]; then
  eval $cmd > $LOG_DIR/server_start.log 2>&1 < /dev/null &
  echo $! > $PIDFILE
else
  eval $cmd
fi

可以看到熟悉的spark-submit,入口函数就是spark.jobserver.JobServer的main函数,浪尖就不在这里展开了。

spark jobserver的大致架构如下图所示,大家也可以参照下图所示的思路提示去阅读,球友的话也可以去星球里找寻我周么发出来的提示。

阅读源码,坚持学习,坚持进步是比较枯燥的事情,这是因为有益的事情往往是比较枯燥的,消耗的事情往往是很轻松的。就看你如何选择了

更多spark,flink等大数据技巧欢迎关注浪尖知识星球。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档