V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
VoidChen
V2EX  ›  程序员

spark 集群对于 rdd 的分配是怎样的?

  •  
  •   VoidChen · 2018-11-19 10:26:37 +08:00 · 1587 次点击
    这是一个创建于 2195 天前的主题,其中的信息可能已经有所发展或是发生改变。

        我是 storm 转来 spark 的,storm 可以让我们自己控制数据放在那台机上跑,而我看 spark 好像都是 drive 端定义好然后提交执行,rdd 分布在哪台机对于我们来说似乎是个黑盒?听说对于 hdfs 来说,rdd 会尽可能地放到数据存放的那台机执行?
        另外就是假如我有个场景,做流处理,有一块数据需要常驻内存用于跟流匹配,storm 就可以直接初始化在每台机上( hash 分区),spark 的话怎么处理?好像只能用广播传递到每个 rdd,那这样每次都传不会很耗费网络 io ?

        附上我之前的一点发现= =: https://www.v2ex.com/t/508511#reply5

    cyspy
        1
    cyspy  
       2018-11-19 10:37:57 +08:00   ❤️ 1
    后一个问题是 Spark 的广播变量解决的吧,不适用广播变量的话就是数据跟随 lambda 闭包发送到所有 Executor,每个 RDD Partition 一次,如果用广播变量的话是一次发送到所有 Executor,之后就不再需要重复发送了。至于分配,我理解上 Storm 这类流式处理更多的是搭建一个长期运行的集群系统,而 Spark 是一个批处理系统,以任务为单位的,一个 Executor 挂了会把任务在其他 Executor 上重跑,所以不指定机器。
    VoidChen
        2
    VoidChen  
    OP
       2018-11-19 10:46:10 +08:00
    @cyspy 感觉理解很到位,就是这个广播变量,每次任务都要发送一次有点难受。。。如果这个 rdd 转换过那广播变量还能跟过去吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1876 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:19 · PVG 00:19 · LAX 08:19 · JFK 11:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.