Spark笔记1. rpcEnv 源码分析

master-worker

这两天看了下 Spark 源码,感叹 Scala 的强大,不愧是 killer 级别的产品。想想 golang 果然是两个风格的语言。没有线上Spark部署及使用经验,仅仅按照官网执行过 SparkPi 示例,也就是 Hello World 水平。


我对 Spark 的认知:

1. 重度依赖 HDFS,可以使用单机文件,但效率肯定不行,特别是海量数据

2. 因为数据选择持久化在内存中,所以计算速度快。尤其适用于机器学习,对数据反复蹂躏的场景

3. 上层可以构建 Spark SQL 方便查询,类似 Hive,并且老版本就是基于 Hive

4. 部署也比较简单,有三种模式:standalone, mesos, yarn

5. 典型的master-worker 工作方式,特别类似以前做过的 mesos

6. RDD模型看懂了,无非就是分布式的数据集,按着一定规则做分片。核心在于Iterator,可以使transformation阶段不必计算,等action触发后再执行,一套流式下来非常完美。

7. DAGScheduler 是整个spark 的核心,如果说RDD是静态的数据集操作描述,那么DAGScheduler就是动态的对RDD做执行规划

Rpc 框架

先庖丁解牛,从底层业务无关Rpc看起。官方 Jira 一直要摆税对 Akka 的依赖,一个是想让 Rpc 插件化,一个原因是 Scala 的东西升级变化太快,版本兼容做的不够好。当前1.6做的还不够彻底。

rpcEnv

当前支持 netty 和 akka 两种框架,可以看到在 rpcEnvNames 这个 Map 里注册了两个工厂方法,具体使用哪一个由配置决定,默认是 netty。 生成的 rpcEnv 是什么呢? 不是具体的 rpc 对象,而是类似 rpc 对象的管理者。就像用 Go 写 Redis Proxy时,有一个 Sessions Mana 来管理会话一样。rpcEnv就像一个容器,保存着自身 rpc 对象和连接的远端 rpc,屏蔽底层不同协议之间的差异。

在 Spark 中具体的 rpc 对象叫 endpoint(实在是没法翻译),worker节点是一个 endpoint, master 节点也是一个 endpoint, 包括其它的 driver, application, executorbackend。

trait 特质
CoarseGranined

单机时任务执行的 backend 是CoarseGrained, 实现了 ThreadSafeRpcEndPoint, 虽说是线程安全,但实现全部是加上 synchronized 做到的,worker, master 无一例外。

为了屏蔽上层调用者的差异,框架层面只做基本的业务无关操作,业务相关的初始化全部由回调完成。我们都知道比如 Akka,业务逻辑全部在 PreStart 这类接口内完成,一般业务需要重写。

通用rpc初始化函数 setupEndPoint
setupEndpoint 部分代码

这块代码很好理解,调用 actorSystem 系统生成自已的 rpc endpointRef,因为要连别的 rpc 自已也要有。

 val actorRef 值由后面的函数执行后生成,是一个 actorRef。这是一个惰性的,直到下面 AkkaRpcEndpointRef 生成了 endpointRef, 再调用 init() 函数后才执行。

业务无关的 init

跟踪到这里,开始执行 actorRef,回头再看 actorRef ,是一个标准的 Akka actor 生成函数。在正式对外提供服务前,会调用几个重写的方法,这里面是 preStart(), 这个preStart 会调用 endpoint 的 onStart 方法,这个endpoint 就是具体的业务对象。 worker 节点要生成N个 threadpool, 连接master, balabala 一大堆,master 节点要做选举,生成 N个 threadpool,等待 worker 连接,等待 Application driver 发送的任务,一大堆 balabala。

而这些正式业务逻辑,全部由 endpoint 重写 receive 这个 akka 的偏函数实现。至此业务无关的 rpc 分析完。

有理解错误的,请大家指证~_~  未完待续 ,todo...... 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容