gpt4 book ai didi

hadoop - 您如何设置具有不同批处理持续时间的多个 Spark Streaming 作业?

转载 作者:可可西里 更新时间:2023-11-01 14:19:36 28 4
gpt4 key购买 nike

我们正处于转换大型企业当前数据架构的开始阶段,我目前正在构建一个 Spark Streaming ETL 框架,我们将在其中将所有源连接到目的地(源/目的地可以是 Kafka 主题、Flume 、HDFS 等)通过转换。这看起来像:

SparkStreamingEtlManager.addEtl(源、转换*、目标)
SparkStreamingEtlManager.streamEtl()
streamingContext.start()

假设是,因为我们应该只有一个 SparkContext,所以我们将在一个应用程序/jar 中部署所有 ETL 管道。

问题在于 batchDuration 是上下文本身的属性,而不是 ReceiverInputDStream 的属性(这是为什么?)。因此,我们是否需要拥有多个 Spark 集群,或者允许多个 SparkContext 并部署多个应用程序?有没有其他方法可以控制每个接收器的批处理持续时间?

如果我的假设有任何幼稚或需要改写,请告诉我。谢谢!

最佳答案

根据我的经验,不同的流有不同的调优要求。吞吐量、延迟、接收端的容量、要遵守的 SLA 等。

为了满足这种多样性,我们需要配置每个 Spark Streaming 作业来解决上述特殊性。因此,不仅是批处理间隔,还有内存和 CPU、数据分区、执行节点数量(当负载受网络限制时)等资源。

因此,每个 Spark Streaming 作业都成为 Spark 集群上的一个单独的作业部署。这也将允许监控和管理彼此独立的单独管道,并有助于进一步微调流程。

在我们的案例中,我们使用 Mesos + Marathon 来管理运行 3600x24x7 的 Spark Streaming 作业集。

关于hadoop - 您如何设置具有不同批处理持续时间的多个 Spark Streaming 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29612726/

28 4 0