【问题标题】:How spark streaming data are storedspark流数据的存储方式
【发布时间】:2015-06-05 07:37:51
【问题描述】:

在火花流中,流数据将由在工作人员上运行的接收器接收。数据会定期推送到数据块中,接收方将收到的BlockInfo发送给驱动程序。我想知道会触发流式传输将块分发到集群吗?(换句话说,它会使用分布式存储策略)。如果它不跨集群分发数据,如何保证工作负载平衡?(图片我们有一个10s节点的集群,但只有几个接收器)

【问题讨论】:

  • Dstream 将数据在每批分到 RDD。根据定义,RDD 是分布式的。所以是的,数据分布在每个批次中
  • 它会在 DStream 中复制每批 RDD 并将复制的内容分发到其他工作节点吗?
  • 抱歉,我不确定我是否理解你。 DStream 表示 RDD 流,其中 dsteam 中的每个 RDD 表示批处理期间接收到的数据。比如说,你有一个间隔为 1 分钟的 Dstream。你运行这个流 1 小时。然后你会得到 60 个 RDD。每个 RDD 都是分布式的。比如说,每个 RDD 有 2 个分区。那么您现在将拥有 120 个分区。每个分区将驻留在 1 个执行程序中。在 n/w 流的情况下,数据被复制。
  • 我明白了。我只想知道spark流何时从n/w接收数据,复制的数据是否会传输到其他节点。现在我明白了。谢谢你:-)

标签: apache-spark storage distributed-computing spark-streaming


【解决方案1】:

据我所知,数据是由运行接收器的工作节点接收的。它们不分布在其他节点上。

如果您需要在进一步处理之前对输入流进行重新分区(跨集群平衡),您可以使用

inputStream.repartition(<number of partitions>)

您可以在 Spark 文档中阅读有关并行级别的更多信息
https://spark.apache.org/docs/latest/streaming-programming-guide.html#performance-tuning

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2016-11-08
    • 1970-01-01
    相关资源
    最近更新 更多