Sparkストリーミングでは、ステートフル操作を使用する場合は必須)StreamingContext
を設定して、信頼できるデータストレージ(S3、HDFS、 ...)の(AND):
DStream
系統説明したように ここ 、出力データストレージを設定するには、yourSparkStreamingCtx.checkpoint(datastoreURL)
を呼び出す必要があります
一方、checkpoint(timeInterval)
を呼び出すだけで、各DataStream
の系統チェックポイント間隔を設定できます。実際、系統チェックポイントの間隔は、DataStream
のスライド間隔の5〜10倍に設定することをお勧めします。
dstream.checkpoint(checkpointInterval)。通常、DStreamの5〜10のスライド間隔のチェックポイント間隔を試すのが適切な設定です。
私の質問は:
ストリーミングコンテキストがチェックポイントを実行するように設定されていて、no ds.checkpoint(interval)
が呼び出された場合、すべてのデータストリームに対してリネージチェックポイントが有効になっていますデフォルトのcheckpointInterval
はbatchInterval
と等しい?それとも、逆に、何が有効になっているかをチェックポイントするメタデータのみですか?
チェックSparkコード(v1.5)DStream
sのチェックポイントが2つの状況で有効になっていることがわかりました。
checkpoint
メソッドの明示的な呼び出しによる(StreamContext
ではない):
/**
* Enable periodic checkpointing of RDDs of this DStream
* @param interval Time interval after which generated RDD will be checkpointed
*/
def checkpoint(interval: Duration): DStream[T] = {
if (isInitialized) {
throw new UnsupportedOperationException(
"Cannot change checkpoint interval of an DStream after streaming context has started")
}
persist()
checkpointDuration = interval
this
}
具体的な 'DStream'サブクラスがDStream
属性をオーバーライドしている限り(mustCheckpoint
の初期化時)(true
に設定):
private[streaming] def initialize(time: Time) {
...
...
// Set the checkpoint interval to be slideDuration or 10 seconds, which ever is larger
if (mustCheckpoint && checkpointDuration == null) {
checkpointDuration = slideDuration * math.ceil(Seconds(10) / slideDuration).toInt
logInfo("Checkpoint interval automatically set to " + checkpointDuration)
}
...
最初のケースは明らかです。 Sparkストリーミングコードでナイーブ分析を実行する:
grep "val mustCheckpoint = true" $(find -type f -name "*.scala")
> ./org/Apache/spark/streaming/api/python/PythonDStream.scala: override val mustCheckpoint = true
>./org/Apache/spark/streaming/dstream/ReducedWindowedDStream.scala: override val mustCheckpoint = true
>./org/Apache/spark/streaming/dstream/StateDStream.scala: override val mustCheckpoint = true
一般に(PythonDStream
を無視して)、StreamingContext
チェックポイントは、StateDStream
およびReducedWindowedDStream
インスタンスの系統チェックポイントのみを有効にすることがわかります。これらのインスタンスは、変換の結果です(それぞれ、AND)。