2016-03-10 27 views
7

AWS Kinesisストリームに接続されたSpark Streamingを使用して、受信しているメトリックを集計し、その集約をinfluxdbに書き込んで利用できるようにしますリアルタイムのダッシュボード。Kinesisスパークストリーミング受信機のチェックポイントの動作

すべてうまくいっていますが、システムの展開や最終的な障害の中断をどのように管理するべきか検討中です。

ドキュメントでは、Kinesis統合ライブラリはすでに障害やチェックポイントなどのために準備されていると言われていますが、ここでチェックポイントがどのように機能しているかを明確にしたいと思います。

キネシス受信機は、Amazonのソフトウェアライセンス(ASL)の下でアマゾンが提供するキネシスクライアントライブラリ(KCL)を使用して入力DSTREAMを作成します。 KCLは、Apache 2.0ライセンスのAWSのJava SDKの上に構築され、労働者、チェックポイント、およびシャードリースの概念を介して負荷分散、フォールトトレランス、チェックポイントを提供します。

キネシスのチェックポイント間隔を定義できますが、ストリームのどのポイントまで測定基準を消費したかをマークするために使用されています。だから、スパークストリーミングのチェックポイント機能を使用する必要があります。

1分あたりのデータを集計するので、バッチ間隔は60秒ですが、60秒間はストリームからデータを継続的に受信しています。私は(仕事の新しいバージョンを展開するために)JavaStreamingContext.stop(...)を実行すると、受信機が停止され、

  • チェックポイントは以下となります。ここでは

    は私の質問です最後に更新されますか?
  • スパークストリーミングチェックポイントはいつ発生しますか?仕事のたびに?前?
  • 両方のチェックポイントが機能していると仮定すると、障害発生時の一貫性をどのように保証できますか?ストリーミングチェックポイントが発生するたびに、同時にキネシスにチェックポイントを設定する必要があります。そうしないと、同じデータをもう一度読み終えることができます。これをどうすれば処理できますか?
  • 基礎となるサービス(この場合はinfluxdb)がダウンしている場合、どうすればよいですか?再試行メカニズムを実装しますか?その場合は、しばらくしてから再試行を停止する必要があります。そうしないと、Out of Memoryが実行されます。事前に

ありがとう!

答えて

0

チェックポイント・ソリューションは、コンポーネントと、各設問はSOで別の質問を必要とすることが非常に複雑であるとして、それはあなたの質問に完全な答えになることはありません百パーセント確認してください。それでも、多分これは、プロセス上のいくつかの手掛かりを与えるだろう:それはあなたがあなたのパイプラインの異なるステージにチェックポイントを実行できることを意味して

  • チェックポイントは、DSTREAMレベルで動作します。それは、Sparkがレシーバによって生成されたブロックから最初のRDDを作成するとき、またはメトリックを計算した後の段階で取得できる変換されたRDDになる可能性があります。したがって、停止を呼び出すと(正常に停止した場合)、受信者がパイプラインで選択したポイントで停止した後に最後のRDDが処理されたチェックポイントの状態になります。

  • チェックポイントはJobGeneratorというSparkコンポーネント。ジョブを実行する前に、RDDを計算するDStreamを生成します。そのステップでチェックポイントが設定されている場合は、そのDStreamのすべてのRDDがさらにチェックポイントメタデータを作成し、RDDはチェックポイントを必要とするものとしてマークされます。次に、SparkContextは生成されたジョブを実行し、最後にdoCheckpointメソッドを呼び出して、チェックポイントデータを設定された場所に保持します。毎回スパークは、アプリケーションを実行します

  • 実際のジョブ完了し、チェックポイントの持続性の間あなたには、いくつかの待ち時間を期待しますのでJobGeneratorが、そのために別のジョブを作成します、それはあなたからのチェックポイント・データをストリーミングコンテキストを作成します。たとえば、Kenesisレシーバが停止した後に最後のSparkがシャットダウンしたときの状態7のメトリクスがある場合、ストリーミングコンテキストが回復すると、状態7に戻り、新しいケネシスデータから生成された次のバッチのみが返されますあなたにあなたの製品をどのように建築するのかあなたにあなたの言う通りにそれを州に置くでしょう8

  • おそらく、データが依存関係によって正常に処理された後にのみチェックポイントを行うのが理にかなっています(短期的な接続の問題を避けるために再試行のメカニズムを適用することを提案します)。しかし、あまりにも情報がそれに完全な答えを与えるには少し

関連する問題