Bre*_*dan 5 hadoop apache-spark spark-streaming
我们正处于转变大型企业当前数据架构的开始阶段,我目前正在构建一个Spark Streaming ETL框架,我们将所有源连接到目的地(源/目的地可能是Kafka主题,Flume,HDFS,等)通过转换.这看起来像是这样的:
SparkStreamingEtlManager.addEtl(Source, Transformation*, Destination)
SparkStreamingEtlManager.streamEtl()
streamingContext.start()
假设是,因为我们应该只有一个SparkContext,所以我们将在一个应用程序/ jar中部署所有ETL管道.
这个问题是batchDuration是上下文本身的属性而不是ReceiverInputDStream的属性(这是为什么?).我们是否需要拥有多个Spark群集,或者允许多个SparkContexts并部署多个应用程序?有没有其他方法可以控制每个接收器的批处理持续时间?
如果我的任何假设是天真的或需要改写,请告诉我.谢谢!
根据我的经验,不同的流有不同的调优要求。吞吐量、延迟、接收方的容量、要遵守的 SLA 等。
为了满足这种多样性,我们需要配置每个 Spark Streaming 作业来解决上述特殊性。因此,不仅是批处理间隔,还包括内存和 CPU、数据分区、执行节点数量等资源(当负载受网络限制时)。
因此,每个 Spark Streaming 作业都成为 Spark 集群上的单独作业部署。这还允许对彼此独立的单独管道进行监控和管理,并有助于进一步微调流程。
在我们的示例中,我们使用 Mesos + Marathon 来管理运行 3600x24x7 的 Spark Streaming 作业集。
归档时间: |
|
查看次数: |
2170 次 |
最近记录: |