• 请不要在回答技术问题时复制粘贴 AI 生成的内容
VoidChen
V2EX  ›  程序员

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

  •  
  •   VoidChen · Nov 19, 2018 · 2025 views
    This topic created in 2757 days ago, the information mentioned may be changed or developed.

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

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

    cyspy
        1
    cyspy  
       Nov 19, 2018   ❤️ 1
    后一个问题是 Spark 的广播变量解决的吧,不适用广播变量的话就是数据跟随 lambda 闭包发送到所有 Executor,每个 RDD Partition 一次,如果用广播变量的话是一次发送到所有 Executor,之后就不再需要重复发送了。至于分配,我理解上 Storm 这类流式处理更多的是搭建一个长期运行的集群系统,而 Spark 是一个批处理系统,以任务为单位的,一个 Executor 挂了会把任务在其他 Executor 上重跑,所以不指定机器。
    VoidChen
        2
    VoidChen  
    OP
       Nov 19, 2018
    @cyspy 感觉理解很到位,就是这个广播变量,每次任务都要发送一次有点难受。。。如果这个 rdd 转换过那广播变量还能跟过去吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1450 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 16:34 · PVG 00:34 · LAX 09:34 · JFK 12:34
    ♥ Do have faith in what you're doing.