【问题标题】:Spark streaming StreamingContext active count火花流 StreamingContext 活动计数
【发布时间】:2016-09-17 05:52:49
【问题描述】:
spark docs 状态:
一个 JVM 中只能同时激活一个 StreamingContext。
想象一下我计划从两个 Kafka 主题读取/处理数据的情况,其中一个作业从一个 Kafka 主题获取数据,另一个作业从另一个 kafka 主题获取数据。我可以同时在同一个 hadoop 集群上同时触发这两个作业吗?
它还指出,
一旦上下文停止,就无法重新启动。
因此,如果由于某种原因我必须停止 spark 作业,有什么方法可以重新启动它?我是通过 oozie 还是什么来触发它的?
【问题讨论】:
标签:
hadoop
apache-spark
streaming
spark-streaming
【解决方案1】:
我可以在同一个 hadoop 集群上并行触发这两个作业吗
同时?
为了简单起见,让我们澄清一下条款。 StreamingContext 在 Spark 作业中是唯一的。如果您想在同一个作业中读取多个流,可以通过将相同的StreamingContext 两次传递给不同的KafkaUtils.createStream 方法来实现。
如果您有多个作业,您将这些作业提交给 Spark,那么每个作业都可以拥有自己的 StreamingContext。每个作业都有自己的 JVM 实例。
因此,如果由于某种原因我必须停止 spark 作业,该怎么办
让它重新启动?
实现您想要的一种可能的方法是使用 Spark 的集群模式来运行您的流式作业并传递 --supervise 标志。 Spark Master 将确保作业在失败时重新启动。
您可以在 Sparks "Submitting Applications" 文档中阅读更多相关信息。