【スパークストリーミング]()構造と動作原理

I.はじめに

スパークストリーミングストリーミングハイスループットシステムで、フォールトトレラントなリアルタイム・データ・ストリームは、データソース(例えば、カフカ、水路、ツイッター、ゼロ、TCPソケット)の多様であってもよい類似マップ削減など参加複雑な操作、およびリアルタイムダッシュボードへの外部ファイルシステム、データベースやアプリケーションに結果を保存します。

これは、拡張スパークコアAPIで、高スループット、メカニズムを処理するフォールトトレラントのリアルタイムデータストリーミングを実現することができますフレームワークです。

これは、データを取得するために複数のデータソースをサポートしています。

ここに画像を挿入説明
ストリーミングスパーク HDFS処理構造に格納され、処理後に、HDFSなどの様々な供給源カフカ、水路からのリアルタイム入力データを受信し、

データベースや他の場所。

ダッシュボード:グラフィカル・モニタリング・インタフェースは、スパークストリーミングモニタリングのフロントページに出力することができます。

第二に、ストリーム処理アーキテクチャ

ここに画像を挿入説明

三、マイクロバッチアーキテクチャ

スパークバルクデータの処理(オフラインデータ)は、スパークは、ストリーミング実際の処理データ、外部データ・ストリームとしてではなく、時間によってセグメンテーションをドッキングした後ストロムないよう処理することがバッチ 1つの分割によるファイル1 、およびスパーク処理ロジックは同じです。

スパークストリーミングエンジンのエンジンをスパークするため、一定の時間間隔、分割データによれば、リアルタイムストリーミングデータを受信し、バッチの結果が最終的に得られます。

ここに画像を挿入説明

DSTREAM:ストリーミングスパーク連続データストリームの表現を提供するが、高度に抽象DSTREAM離散ストリームと呼ばれます。

一人一人分のデータ内の1分セクションに従って外部データの流入は、(連続データストリーム)の連続であり、1分、1分、それは独立したセクション(ディスクリート)の場合。

  • DSTREAM特定のデータ型のスパークストリーミング

  • スパーク2.3.1スタート1ミリ秒の遅延(約100ミリ秒前)

  • 各マイクロバッチRDDある - バッチおよびストリーミングの間でコードを共有することができ

第四に、動作原理

4.1ストリーミングコンテキスト

コンテキストをストリーミングはスパークでのデータのストリームを消費します。

from pyspark import SparkContext
from pyspark.streaming import StreamingContext

# Create a local StreamingContext with two working threads and a batch interval of 2 seconds
# local[2] – spark executor runs on 2 cores.

sc = StreamingContext( SparkContext("local[2]", "NetWordCount"), 2 )

# ….
sc.start()

ここに画像を挿入説明

  • JVMはStreamingContextをアクティブにすることができます。
  • StreamingContextは停止後に再起動されますが、再作成することができません。

4.2 DSTREAM

連続したディスクリート構成RDD一連のDSTREAMは、各RDDは、時間間隔内で決定されたデータが含まれています。

ここに画像を挿入説明
RDDのスパークが空間次元として理解することができる、DSTREAM RDDがあると理解空間次元で時間次元を追加しました

例図では、データの流れは同じであるが、異なる時間スケールで内部処理ロジックに切断し4つのスライスに分割されます。

# Create a local StreamingContext with two working threads and a batch interval of 2 seconds

sc = StreamingContext( SparkContext("local[2]", "NetWordCount"), 2 )
lines = ssc.socketTextStream("localhost", 3333) # Create a DStream
words = lines.flatMap(lambda line: line.split(" ")) # Split each line into words
pairs = words.map(lambda word: (word, 1)) # Count each word in each batch
wordCounts = pairs.reduceByKey(lambda x, y: x + y)

ssc.start() # Start the computation
ssc.awaitTermination() # Wait for the computation to terminate

スパークやスパークの違いをストリーミング:

スパーク- > EET:変態アクション + EET DAG

スパークストリーミング- > DSTREAM:変換出力(それは中間データ、入力データの活性化を出力することを保証しなければならないことはできません)+ DStreamGraph

操作のいずれかが(オペレータを介して)RDDの動作の基礎をなすDSTREAMに変換されます。

ここに画像を挿入説明
概要:連続データの永続性、ディスクリートおよびバッチ処理。

  • 持続性:受信したデータを一時的に記憶されます。

なぜ持続性:なし計算がないので間違っからのデータは、データソースに戻ってする必要がある場合、フォールトトレランスを行い、データの一時記憶を復元することができます。

  • 離散:タイムスライスは、処理ユニットが形成されています。

フラグメント処理:バッチ処理。

4.3入力DStreams&レシーバー

  • 入力DStreamsストリーミングソースから受信した入力データのストリームを表します。
  • (ファイルストリームを除く)各入力DSTREAMは、受信機と関連した側オブジェクトを受信し、処理源から受信した受信対象データがメモリスパークに格納されています。
  • あなたは同じStreamingContextで複数の入力DStreamsを作成することができます

ここに画像を挿入説明

五、DSTREAM操作

1.1 通常のスイッチング動作:マップ、flatMap、flter、労働組合 、参加、カウントなど

1.2変換(FUNC)操作:オンDSTREAMはRDDツーRDD任意のアプリケーションの機能を可能に

1.3 updateStateByKey操作:

1.4スイッチング動作ウィンドウは:このようなcountByWindowように、変換することができ、reduceByKeyAndWindowデータ、(バッチ間隔、およびスライディングウィンドウインターバル間隔)のスライディングウィンドウによる他の

2. 出力動作:DSTREAMデータが印字()、データベースやファイルシステムなどの外部システムに出力され、foreachRDD(FUNC)ことができ 、saveAsTextFiles()、saveAsHadoopFiles() 、等

3. 永続性:効率的な反復計算を可能メモリに格納されたデータストリームの存続()メソッド

六、スパークストリーミング・アーキテクチャ

ここに画像を挿入説明
マスター:DSTREAMとの間に録音依存関係や親族、そして新しいRDDを生成するためのタスクスケジューリングを担当しています

ワーカー:、ネットワークからデータを受信し格納し、計算を実行RDD

クライアント:データの責任は、Sparkストリーミングに注ぎ

スケジュール:時間によってトリガ。

マスターは:DSTREAMグラフこの絵を維持しています。(他ノードレベル、タスクレベルです)

ワーカー:図に従って実行します。

主要な役割を有する作業者:受信機は、外部のデータ・ストリームを受信し、データストリームは、受信機をストリーミング全体内部スパークを通過させる(最終的なデータストリームフォーマットにパッケージ受信機がスパークストリーミングを処理することができます)

受信:受信機は、異なるデータソースを受信し、標的捕捉は、ストリーミングスパークは、異なるノードに分散処理の異なる受信機を提供し、各受信機が特定され、各ノードは、の一部として受信します入力。それは内部バッファに格納される前に、Receiverは、すぐに完全な計算を受け付けておりません。されたストリーミング時定数スライスによれば、タイマーが満了すると、バッファはデータブロックのブロック(アクションバッファ:切断ユーザ定義の間隔)にデータを変換し、待つ必要があるため、そのデータスパークのデータブロックにデータブロックを変換するために外にキューからマネージャのデータブロックをブロックし、その後、内部に行くためのキューにブロックが処理することができます。

なぜプロセスがありますか?

コンテナ - >エグゼキュータそれはプロセスであり、

ストリーミングジョブ投入をスパーク:

•ネットワーク入力トラッカー:データを受信した各ネットワークを追跡し、適切な入力DSTREAMにマップ

•ジョブスケジューラ:定期的な訪問DSTREAMグラフと仕事をスパーク発生し、ジョブマネージャは、それを実行します

•ジョブマネージャ:ジョブキューを取得して、タスクのスパークを実行します

ストリーミングウィンドウ操作をスパーク:

•スパークスライディングウィンドウ技術によりウィンドウ操作、大規模な差分更新データの統計学的分析のセットを提供

•ウィンドウ動作:一定期間のデータ処理のタイミング

ここに画像を挿入説明

操作画面に基づく2つのパラメータを指定する必要

  • ウィンドウ(窓長)の合計の長さ:あなたはどのくらいのデータを計算します

  • 時間間隔をスライディング(スライド間隔):あなたはすべての時間を更新するために行くだろうどのくらい

セブン、何スパークストリーミング

今サポートに、次の3つの主要なビジネスシナリオをSparkStreamingため

1、ステートレス動作:のみ、例えば、現在のバッチでリアルタイムデータに関する。

  • 機会の見出し、分類HTTPリクエスト終了 - >カフカ - >スパークストリーミング - > HTTPリクエストの終了マップ - >応答結果
  • nginxのアクセスログをネットワークライブラリのコレクション、flume->カフカ - >スパークストリーミング - >ハイブ/ HDFS
  • データの同期化、ネットワークライブラリ「マスター」によるマスタ局のデータ - > kafka->スパークストリーミング - >ハイブ/ HDFS

2、ステートフルな操作:DSTREAMステートフルな操作、現在の新しい世代に加えて、データの小さなバッチに頼る必要が前のデータが、また、以前に生成された履歴データのすべてを使用する必要があります。:履歴データと新たに生成されたデータは、以下のようなデータの完全な量の水のテーブルにマージ

  • リアルタイム統計合計額図書館を訪問、各サイト
  • 各ネットワークライブラリの商品に対する総視聴数のリアルタイムの統計情報を、取引数量、売上高

図3に示すように、操作画面:例えば動作時間DSTREAM範囲の指定された期間内にデータのタイミング:

  • 悪意のあるアクセスネットワークライブラリのマスター、爬虫類、統計最も訪問されたユーザーの30分以内に10分ごと
公開された345元の記事 ウォンの賞賛456 ビュー270 000 +

おすすめ

転載: blog.csdn.net/BeiisBei/article/details/105053482