Spark Streaming 如何在驱动程序和执行程序之间调度映射任务?
Posted
技术标签:
【中文标题】Spark Streaming 如何在驱动程序和执行程序之间调度映射任务?【英文标题】:How does Spark Streaming schedule map tasks between driver and executor? 【发布时间】:2018-07-06 17:30:16 【问题描述】:我使用 Apache Spark 2.1 和 Apache Kafka 0.9。
我有一个 Spark Streaming 应用程序,它使用 20 个执行程序运行,并从 Kafka 读取数据,该 Kafka 具有 20 个分区。此 Spark 应用程序仅执行 map
和 flatMap
操作。
Spark 应用程序的作用如下:
-
从 kafka 创建一个以 15 秒为间隔的直接流
执行数据验证
使用仅映射的 Drool 执行转换。没有减少转换
使用 check-and-put 写入 HBase
我想知道executor和partition是1-1映射的,是每个executor独立执行上述步骤并独立写入HBase,还是数据会在多个executor中打乱,驱动和executor之间进行操作?
【问题讨论】:
【参考方案1】:Spark 作业提交只能在 executor 上执行的任务。换句话说,执行者是唯一可以执行任务的地方。司机要协调任务并相应地安排它们。
话虽如此,我想说的是:
每个执行者会独立执行上述步骤并独立写入HBase
顺便说一句,答案与使用的 Spark 版本无关。一直都是这样(看不出有什么理由会改变,甚至应该改变)。
【讨论】:
以上是关于Spark Streaming 如何在驱动程序和执行程序之间调度映射任务?的主要内容,如果未能解决你的问题,请参考以下文章
Spark Streaming 如何在驱动程序和执行程序之间调度映射任务?
如何在idea里面直接运行spark streaming程序
如何在 Spark Streaming 中自动重启故障节点?