第24章 チェックポイント チェックポイント
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
チェックポインティングという行為は、ステートフル・ストリーミング・アプリケーションを再起動するために必要な情報を、情報を失うことなく、その時点までに見たすべてのデータを再処理することなく、定期的に保存することである。
チェックポインティングは、ステートフルなSpark Streamingアプリケーションを扱う際に特に注意すべきテーマである。 チェックポインティングがなければ、ステートフルなストリーミングアプリケーションを再起動する際に、アプリケーションを停止した時点までの状態を再構築する必要がある。 ウィンドウ演算子の場合、この再構築プロセスは何時間ものデータで構成される可能性があり、より巨大な中間ストレージが必要になる。 チェックポイントがなければ、Webサイトの各ページへの訪問者数をカウントするような単純なステートフル・アプリケーションでさえ、一貫性のあるレベルまで状態を再構築するために、これまでに見たすべてのデータを再処理する必要がある。
しかし、チェックポイントは無料ではなく、チェックポイント・データを維持するために必要なストレージや、この繰り返し操作がアプリケーションのパフォーマンスに与える影響など、ストリーミング・アプリケーションに新たな要件を課すことになる。
この章では、Spark Streamingアプリケーションでチェックポイントをセットアップし、使用するために必要な考慮事項について説明する。 まず、プログラムでチェックポイントをセットアップする実用的な側面を例で説明する。 その後、チェックポイントから回復する方法、チェックポイントがもたらす演算子、そして最後に、チェックポイントのパフォーマンスを調整するテクニックについて説明する。
チェックポイントの使い方を理解する
、オンラインビデオストアで1時間あたりに再生されたビデオの回数を追跡する、以下のストリーミングジョブを考えてみよう。mapWithState を使って、ストリームを通過してくるvideoPlayed イベントを追跡し、イベントに埋め込まれたタイムスタンプを処理して、時間ベースの集計を決定する。
以下のコード・スニペットでは、次のように仮定している:
-
データストリームは以下の構造からなる。
VideoPlayed(video-id, client-id, timestamp) -
videoPlayedDStream。DStream[VideoPlayed] -
このシグネチャーを持つ
trackVideoHits関数がある:
// Data StructurescaseclassVideoPlayed(videoId:String,clientId:String,timestamp:Long)caseclassVideoPlayCount(videoId:String,day:Date,count:Long)// State Tracking FunctiondeftrackVideoHits(videoId:String,timestamp:Option[Long],runningCount:State[VideoPlayCount]):Option[VideoPlayCount]
オンラインリソース
チェックポインティングを理解するために必要な要素にコードを絞り込んだ。完全な例を調べるには、この本のオンラインリソース ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access